二、搭建Struts2开发环境并理解配置文件
1、搭建开发环境
手动搭建开发环境
导入相关jar包
Struts框架的开发常用的jar包,一般有这些:
复制Struts.xml文件到项目中
在web.xml中加入过滤器代码
<filter> <filter-name>Struts2Filter</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>Struts2Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
使用IDE自动搭建开发环境
如果觉得手动比较麻烦,我们也可以在IDE环境中快捷创建Struts2环境:
创建java项目
右键项目在MyEclipse上,选择Add Struts Capablities.
在弹出的对话框中选择Struts2的版本,然后选择过滤器的过滤效果即可。
2、配置文件概述
元素提示功能启用:
Struts2的配置文件时Struts.xml,打开xml文件后即可看到这样的界面:
此时我们需要启用此配置文件的自动提示,显示是我们要编写的具体元素,如果我们的提示包不能用,无法自动提示,就需要导入一个Struts-2.3.dtd后缀的文件才可以,如果电脑联网它会自动进行下载和加载,如果未联网,在Windows-preference-MyEclipse-Files and Editors-XML-XML Catalog下点击添加Add,会出现下面的界面:
KeyType选择URI,在Key中填写此URI:http://struts.apache.org/dtds/struts-2.3.dtd,在Location位置点击File System找到这个路径Struts2.3.16.1/src/core/src/main/resources,在目录中可以找到此文件,导入后即可成功显示元素提示。
常用元素介绍
Struts2中常用的标签元素有这些:bean、constant、package、include等。它们各自代表的一些意思见下图:
在上面的图中,可以看到,package是一个包标签,用于区分不同的请求文件的标签,比如前台的请求和后台的请求,以前的方法是通过Servlet来处理一个请求,在Struts2中则用这种方式来处理。下面通过一个Demo来验证一下如何用Struts来处理请求,代码很简单,如下:
首选看配置文件:
然后看LoginAction.java文件:
public class LoginAction {
private String username;
private String password;
public String execute(){
if(username.equals("admin") && password.equals("123")){
return "success";
}else{
return "fail";
}
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
截图如下:
注意:在此Demo中,我们在LoginAction.java中并没有手动获取username和password的值,为什么他会自动的进行判断是不是admin呢?这是因为Struts2中的前置拦截器在起作用,它会将jsp页面中的数据自动的进行数据封装和文件上传,同时它也是Struts2的灵魂所在。
3、项目走向流转
Http请求流转流程:
一个完整的Http请求从web.xml开始,经过web.xml的过滤器过滤,过滤出action的请求,然后经过Struts2.xml进行url地址与action地址的匹配,成功后进入相应的类文件,然后到前置过滤器,进行数据的封装和文件的上传,然后到达java文件进行一些请求数据的处理(接收数据和持久化数据),返回一个字符串来标识结果页,然后经过后置拦截器进行异常信息的拦截和日志信息的处理,再传给Struts.xml进行返回的字符串匹配,随后跳转到相应的结果页面,如果结果页面还有请求,继续执行这个过程,具体如下图所示:
根据上面的小Demo进行配置连接点的分析:
在上面的图中,action后面的path代表我们自己的文件路径,然后/users/CheckLogin.action指向Struts2内部名为users的package标签包下面的action,而此action又有相应的class指向(包名.类名),然后通过action下面的result指向一个结果页面。