struts2主要是将web应用所有的页面请求统一管理,有自己实现的拦截器(相当于中央filter),MVC的一个整洁实现。
以上为这个demo的大致目录(对于web的外部包,放在WebContent/WEB-INF/lib目录下即可,会自动同步加载到Libraries目录中)
这里用的是struts2.5.14版本的基础包,简单实现struts2的工作的流程
1、先在web.xml中注册struts实现的拦截器类(StrutsPrepareAndExecuteFilter.class),该类在引入的struts包里(可以通过ctrl+shift+t打开open type查找这个类)
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2、开始写主界面,一个简单的form表单,这里的action为struts.xml配置里package.namespace+action.name+.action(第一个/省略)
<body>
<form action="login.action" method="post">
用户名:<input type="text" name="user"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="login">
</form>
</body>
3、通过主界面来编写Action类,该类中必须有execute方法(alt+shift+s来选择generate getters and setters来快捷构建setter&getter)
public class loginAction {
private String user;
private String password;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String execute(){
System.out.println("Struts demo");
return "success";
}
}
4、在struts.xml里注册写好的Action类,action.class是该action类的全限定性类名,result则为action执行后跳转的页面,result.name为action类中execute方法的返回值
<?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="test" namespace="/" extends="struts-default">
<action name="Test" class="com.test.testAction">
<result>/test.jsp</result>
</action>
<action name="login" class="com.test.loginAction">
<result name="success">/login.jsp</result>
</action>
</package>
</struts>
5、最后写跳转页面
<body>
name = ${user }
</body>
整体的struts的demo如上编写,步骤大同小异:
在web.xml注册struts的filter,编写页面,页面对应action类,在struts.xml注册action,最后是跳转页面
struts.xml头部约束说明查找
找到如下jar包
展开后在根目录下找到对应版本的dtd约束文件
复制该段DOCTYPE到新建的struts.xml
在web.xml注册的filter类名也可在该jar包目录下查找,右键copy qualified name复制该类全限定性类名