我們使用一個小項目來更好的理解一下struts.xml配置文件中的一些元素
創建一個 login.jsp頁面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用戶登陸</title>
</head>
<body>
<form action="/loginAction" method="post">
用戶名:<input type="text" name="user.name"/><br/>
密碼:<input type="text" name="user.pwd"/><br/>
<input type="submit" value="登錄">
</form>
</body>
</html>
創建用戶類
public class User {
private String name;
private String pwd;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
創建一個Login類 此類主要用于處理用戶登錄
public class Login extends ActionSupport {
private User user = new User();
@Override
public String execute() throws Exception {
if ("user1".equals(user.getName()) && "pwd1".equals(user.getPwd())){
return "ok";
}
return "err";
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
配置struts.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="user" extends="struts-default" namespace="/">
<action name="loginAction" class="cc.xxxxx.service.Login">
<result name="ok">/index.jsp</result>
<result name="err">/login.jsp</result>
</action>
</package>
</struts>
或許你有幾個問題
問:為什么需要創建Login類并繼承ActionSupport
類?
答:Login類用于對用戶的請求做處理。
問:在Struts2中,提供了多種實現Action的方式。
答:三種。
第一種:實現Action 接口。
第二種:繼承ActionSupport 類。
第三種:不是實現也不繼承。
注意:上述三種方式都必須重寫或存在execute()方法。
在Action中所有用于處理請求的方法都必須返回字串符類型。
問:stuts.xml文件配置的元素以及屬性
答:package 元素用于定義Struts2處理請求的邏輯單元,name屬性為必須并且唯一,用來指定包名稱。
extends 屬性類似于Java中的extends關鍵字,用于指定要擴展的包。
namespace 屬性為你action的包名。這里不是類的包名,這里類似于一個請求路徑。
action 元素用于配置Struts2框架的"工作單元" Action類。action元素將一個請求的URL對應到一個Action類。name屬性是必須的,表示action的名字;class屬性是可選的,用于設定Action類的全限定名。
result 元素用來設定Action類處理結束后,系統下一步將要做什么。name屬性表示result的邏輯視圖名稱,必須與Action類返回的字符串進行匹配;而result元素的值表示與邏輯視圖名稱對應的物理資源之間的映射,用來指定這個結果對應的實際資源的位置。