我们使用一个小项目来更好的理解一下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元素的值表示与逻辑视图名称对应的物理资源之间的映射,用来指定这个结果对应的实际资源的位置。