我們使用一個(gè)小項(xiàng)目來更好的理解一下struts.xml配置文件中的一些元素
創(chuàng)建一個(gè) 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>
創(chuàng)建用戶類
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;
}
}
創(chuàng)建一個(gè)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>
或許你有幾個(gè)問題
問:為什么需要?jiǎng)?chuàng)建Login類并繼承ActionSupport
類?
答:Login類用于對(duì)用戶的請(qǐng)求做處理。
問:在Struts2中,提供了多種實(shí)現(xiàn)Action的方式渣磷。
答:三種域那。
第一種:實(shí)現(xiàn)Action 接口。
第二種:繼承ActionSupport 類产还。
第三種:不是實(shí)現(xiàn)也不繼承。
注意:上述三種方式都必須重寫或存在execute()方法。
在Action中所有用于處理請(qǐng)求的方法都必須返回字串符類型俗他。
問:stuts.xml文件配置的元素以及屬性
答:package 元素用于定義Struts2處理請(qǐng)求的邏輯單元,name屬性為必須并且唯一恭理,用來指定包名稱拯辙。
extends 屬性類似于Java中的extends關(guān)鍵字,用于指定要擴(kuò)展的包颜价。
namespace 屬性為你action的包名涯保。這里不是類的包名,這里類似于一個(gè)請(qǐng)求路徑周伦。
action 元素用于配置Struts2框架的"工作單元" Action類夕春。action元素將一個(gè)請(qǐng)求的URL對(duì)應(yīng)到一個(gè)Action類。name屬性是必須的专挪,表示action的名字及志;class屬性是可選的,用于設(shè)定Action類的全限定名寨腔。
result 元素用來設(shè)定Action類處理結(jié)束后速侈,系統(tǒng)下一步將要做什么。name屬性表示result的邏輯視圖名稱迫卢,必須與Action類返回的字符串進(jìn)行匹配倚搬;而result元素的值表示與邏輯視圖名稱對(duì)應(yīng)的物理資源之間的映射,用來指定這個(gè)結(jié)果對(duì)應(yīng)的實(shí)際資源的位置乾蛤。