如何使用struts2搭建web项目
具体有以下步骤:
step1,创建一个JavaWeb Project
step2,添加struts2基本类库
step3,在web.xml中配置struts2的前端控制器
step4,控制器配置文件src/struts.xml
step1创建一个JavaWeb Project
就不详细说了。。。
step2 添加struts2基本类库
我用到的Struts版本为2.1.8,建议使用此版本
将下面的jar包复制到/WEB-INF/lib下
step3 在web.xml中配置struts2的前端控制器
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
1)Struts2的核心控制器FilterDispatcher被设计成了过滤器,通过<filter></filter>标签引入。
2)<url-pattern>/*</url-pattern>说明所有客户端请求都经由FilterDispatcher处理,并把过滤后的请求交给Struts2进行处理
step4 控制器配置文件src/struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<package name="first" namespace="/" extends="struts-default">
<action name="hello" class="action.HelloAction">
<!-- 将jsp页面放到/WEB-INF文件夹下可以避免用户直接访问 -->
<result name="success">/WEB-INF/jsp/success.jsp</result>
<result name="error">/WEB-INF/jsp/error.jsp</result>
</action>
</package>
</struts>
Struts2框架的核心配置文件就是struts.xml,该文件主要负责Struts2应用中各Action的具体实现逻辑。struts.xml会根据不同请求找到具体的Action,然后根据Action返回的逻辑视图名找到具体的物理视图。
该文件发布的时候必须放置在WEB-INF/classes路径下,当程序运行的时候会自动在该目录下搜索struts.xml。
在action标签中定义了name和class。name属性对应的是用户URL请求中的action名,比如在本应用中,用户请求为http://localhost:8080/struts01/hello.action,那么name属性就应该为hello。class属性是处理请求的实现类(注意:要包含完整路径),本应用的实现类是action.HelloAction。
result标签定义逻辑视图和物理视图之间的映射,在我们的Action中,如果返回的字符串是"success”则由对应的success.jsp页面进行处理;如果返回的字符串是"error”则由error.jsp页面进行处理。
step5 编写action与jsp
action.HelloAction.java代码:
package action;
public class HelloAction {
public String execute(){
System.out.println("execute()...");
return "error";
}
}
编写Action作用
Struts2直接使用Action来封装HTTP请求参数,因此Action类应该包含与请求相对应的属性,并为该属性提供对应的setter和getter方法。
为Action类里增加一个execute方法,因为Struts2框架默认会执行这个方法。这个方法本身并不做业务逻辑处理,而是调用其他业务逻辑组件完成这部分工作。
Action类返回一个标准的字符串,该字符串是一个逻辑视图名,该视图名对应实际的物理视图。
Action有一下特点:
Struts2框架中Action是一个POJO,没有被代码污染。
Struts2中的Action的execute方法不依赖于servlet API,改善了Struts1中耦合过于紧密,极大方便了单元测试。
Struts2的Action无须用ActionForm封装请求参数。
相对Struts1框架而言,Struts2的逻辑视图不再是ActionForward对象,而是一个普通的字符串,利于分离和复用。
error.jsp与success.jsp
<%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8" %>
<html>
<head></head>
<body>
<h1>error jsp</h1>
</body>
</html>
<%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8" %>
<html>
<head></head>
<body>
<h1>success jsp</h1>
</body>
</html>
具体细节见代码