1.手动下载相应的jar包,也可以使用maven管理jar包
<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-core -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.1</version>
</dependency>
2.在web.xml中添加struts.xml核心过滤器
过滤器写法有两个版本(匹配不同版本的struts),最新的是org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
解压jar包可以看见这个过滤器类的路径。官方文档也有提及这个变化
http://struts.apache.org/core-developers/web-xml.html
我在使用idea配置核心过滤器的时候遇到了找不到类的问题,解决方法记录在了博客中
https://blog.csdn.net/julse/article/details/79547615
3.新建一个struts.xml文件
使其继承default-struts.xml.将此文件夹放置在src目录下,这样stuts.xml就会随编译后的源代码发布到tomcate服务器上。如果项目有报错,可以去发布项目的文件夹下面检查这个文件有没有被拷贝过去。
4.在struts.xml中配置action
5.发布项目并在浏览器中访问
http://localhost/user/user.action
注意:我配置的tomcate端口号就是浏览器默认端口号80,路径不包括项目名称。
分析struts的工作流程就是看请求的转移:/user/user.action
分析struts的工作过程(原理)
工作流程:
1.核心过滤器拦截以.action结尾的请求,将拦截的请求交给struts处理。正则匹配请求
<url-pattern>*.action</url-pattern>
2.struts里面有很多包(package),每个包管理不同的命名空间(namespace),以/user开头的请求进入命名空间为“/user”的包
<package name="user" namespace="/user" extends="struts-default">
3.包里面可以有很多的action,分别处理这个模块下的不同功能,user.action就分配给了名(name)为“user”,类(class)为UserAction的“action”处理了。此处的method指的是默认调用的java类中的方法
<action name="user" class="cn.julse.predomSSH.action.UserAction" method="list">
Java类中的方法list()【这个java类需要继承ActionSupport,这样便于调用ActionSupport中为action写好的方法】
public class UserAction extends ActionSupport {
private ArrayList<Users> userList;
//=====================
private UserDAO userDAO = new UserDAO();
public String list(){
try {
userList=userDAO.getAll();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return "list";
}
}
4.Java类处理完毕之后,返回一个字符串,这个字符串必须被action中的一个result匹配,便于返回指定的页面给用户。这里返回的是“list”
<result name="list">/users/users.jsp</result>
即是返回了名为list的结果,指向/users/users.jsp页面