使用maven构建struts2
来源:互联网 发布:百度炒股软件 编辑:程序博客网 时间:2024/05/17 01:50
第一个Stuts2程序
struts2配置参考页面
struts2框架主要通过一个过滤器将Struts集成到Web应用,这个过滤器对象是org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
。通过该过滤器对象,Struts2就可以获得Web应用中的HTTP请求,并将这个HTTP请求转发到指定的Action进行处理,Action根据结果返回给客户端相应的页面。
(1)创建Web项目,将Struts的支持类型库文件添加到项目中。

pom.xml:
<!-- struts2依赖包 --><dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.3.14</version></dependency>
(2)在web.xml文件中声明Struts2提供的过滤器,类名为org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter:
<!DOCTYPE web-app PUBLIC<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app> <!-- Struts2 过滤器 --> <filter> <!-- 过滤器名称 --> <filter-name>struts2</filter-name> <!-- 过滤器类 --> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <!-- Struts2 过滤器映射 --> <filter-mapping> <!-- 过滤器名称 --> <filter-name>struts2</filter-name> <!-- 过滤器映射 --> <url-pattern>/*</url-pattern> </filter-mapping></web-app>
(3)在Web项目的源码文件夹(src/main/resources)中,创建名称为struts.xml
的配置文件,此配置文件中定义Struts2中的Action对象:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <!-- 声明包 --> <package name="myPackage" extends="struts-default"> <!-- 定义action --> <action name="first"> <!-- 定义处理成功后的映射页面 --> <result>/first.jsp</result> </action> </package> </struts>
- < package > 标签:声明一个包,通过name属性指定包的名称为myPackage,并通过extends属性指定此包继承于struts-default包。
- < action > 标签:用于定义Action对象,它的name属性用于指定访问此Action的URL。
- < result > 元素:用于定义处理结果和资源之间的映射关系,实例中 < result >子元素的配置为处理成功后,请求将其转发到first.jsp页面。
(4)创建程序中的主页面index.jsp。在该页面中编写一个超链接,用于访问上面所定义的Action对象,此链接所指向的地址为first.action:
<html><body><h2>Hello World!</h2><a href="first.action">struts2</a></body></html>
(5)创建first.jsp页面,此页面是Action对象first处理成功后的返回页面:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>struts2</title></head><body><h1>Hello Struts2!</h1></body></html>
Action对象
主要用于对HTTP请求进行处理,在Struts2 API中,Action对象是一个接口,它位于com.opensymphony.xwork2
包中。在Struts2项目开发中,创建Action对象都要直接或间接实现此对象。
Action接口中包含5个静态的成员变量,它们是Struts2 API为处理结果定义的静态变量:
SUCCESS
代表Action执行成功的返回值。如在Action执行成功的情况下,需要返回到成功页面,此时就可以将返回值设置为SUCCESS。NONE
Action执行成功的返回值。但不需要返回到成功页面。主要用于处理不需要返回结果页面的业务逻辑。ERROR
Action执行失败的返回值。在一些信息验证失败的情况下,可以使Action返回此值。INPUT
代表需要返回到某个输入信息的页面的返回值。LOGIN
代表需要用户登录的返回值。在验证用户是否登录时,Action验证失败,需要用户重新登录,此时就可以将Action对象处理的返回值设置为LOGIN。
(一)请求参数的注入原理
在Struts2框架中,表单提交的数据会自动注入到与Action对象相对应的属性。通过Action对象为属性提供setter方法进行注入:
src/main/java/com.zj.action/UserAction.java:
package com.zj.action;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionSupport;/** * 用户 Action * * @author zhangjuan * */public class UserAction extends ActionSupport { private static final long serialVersionUID = 1L; // 用户名属性 private String userName; // 为 userName 提供 getter 方法 public String getUserName() { return this.userName; } // 为 userName 提供 setter 方法 public void setUserName(final String userName) { this.userName = userName; } @Override public String execute() { return Action.SUCCESS; }}
要注入属性值的Action对象,必须对属性提供setXXX()方法,Struts2的内部实现按照JavaBean规范中提供的setter方法,自动为属性注入值。在获取属性的数值时,通过getter方法获取。
(二)Action的基本流程
- Struts2框架的工作,主要是通过Struts2的过滤器对象拦截HTTP请求,然后将请求分配到指定的Action进行处理。
- Struts2的内部处理机制会判断HTTP请求是否与某个Action对象相匹配,如果找到匹配的Action,就会调用Action对象的execute()方法,并根据处理结果返回相应的值。
- Struts2通过Action的返回值查找返回值所映射的页面。
在Struts2框架中,一个.*action
请求的返回视图由Action对象决定,其实现手段是通过查找返回的字符串对应的配置项,确定返回的视图,如Action中execute()方法返回的字符串为success,那么Struts2就会到配置文件中查找名称为success
的配置项,返回这个配置项对应的视图。
src/main/resources/struts.xml:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <!-- 声明包 --> <package name="myPackage" extends="struts-default"> <!-- 定义action --> <action name="UserAction" class="com.zj.action.UserAction"> <!-- 定义处理成功后的映射页面 --> <result>user_add.jsp</result> </action> </package> </struts>
src/main/web-app/index.jsp:
<html><body> <h2>Hello World!</h2> <a href="UserAction">userAdd</a></body></html>
src/main/web-app/user_add.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>userAdd</title></head><body> Hello userAdd!</body></html>

(三)动态Action

动态Action的处理方式,是通过请求Action对象中一个具体的方法来实现动态的操作,通过在请求Action的URL地址后方加上请求字符串(方法名称),与Action对象中的方法进行匹配,Action地址与请求字符串之间以”!”进行分割。
例如在配置文件struts.xml中配置userAction,当请求其中的add()方法时,其请求方式: /userAction!add
(1)创建Web项目,将Struts的支持类型库文件添加到项目中:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zj.mvnbook</groupId> <artifactId>HelloWorld</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>HelloWorld Maven Webapp</name> <url>http://maven.apache.org</url> <!-- 属性配置 --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- struts2依赖包 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.3.14</version> </dependency> </dependencies> <build> <finalName>HelloWorld</finalName> </build></project>
(2)在web.xml文件中注册Struts2提供的过滤器:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app> <!-- Struts2 过滤器 --> <filter> <!-- 过滤器名称 --> <filter-name>struts2</filter-name> <!-- 过滤器类 --> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <!-- Struts2 过滤器映射 --> <filter-mapping> <!-- 过滤器名称 --> <filter-name>struts2</filter-name> <!-- 过滤器映射 --> <url-pattern>/*</url-pattern> </filter-mapping></web-app>
(3)创建名称为UserAction的Action对象,并在这个对象中分别编写add()方法与update()方法,用于处理添加用户信息的请求及更新用户信息的请求,并将请求返回到相应的页面:
package com.zj.action;import com.opensymphony.xwork2.ActionSupport;/** * 用户 Action * * @author zhangjuan * */public class UserAction extends ActionSupport { private static final long serialVersionUID = 1L; // 提示信息 private String info; /** * 用于处理添加用户信息的请求 * * @return */ public String add() { this.info = "添加用户信息"; return "add"; } /** * 用于处理更新用户信息的请求 * * @return */ public String update() { this.info = "更新用户信息"; return "update"; } public String getInfo() { return this.info; } public void setInfo(final String info) { this.info = info; }}
(4)在src/main/resources文件夹下创建名称为struts.xml的配置文件,在此配置文件中配置UserAction:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <!-- 声明包 --> <package name="myPackage" extends="struts-default"> <!-- 定义action --> <action name="UserAction" class="com.zj.action.UserAction"> <!-- 返回结果为add时,对应添加成功的映射页面 --> <result name="add">user_add.jsp</result> <!-- 返回结果为update时,对应更新成功的映射页面 --> <result name="update">user_update.jsp</result> </action> </package> </struts>
(5)创建名为user_add.jsp页面:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>userAdd</title></head><body> <font color="red"> <s:property value="info"/> </font></body></html>
(6)创建名称为user_update.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>userUpdate</title></head><body> <font color="blue"> <s:property value="info"/> </font></body></html>
上述通过Sturts2标签输出UserAction中的信息: <%@ taglib prefix="s" uri="/struts-tags" %>
(7)创建index.jsp:
<html><body> <h2>Hello World!</h2> <a href="UserAction!add">userAdd</a> <br> <a href="UserAction!update">userUpdate</a></body></html>
- 使用maven构建struts2
- 使用Maven构建Struts2项目
- 使用Maven构建Struts2项目
- myeclipse使用maven构建struts2项目详解
- Maven学习(五)- 使用Maven构建Struts2项目
- Maven学习(五)- 使用Maven构建Struts2项目
- Maven学习(五)- 使用Maven构建Struts2项目
- Maven学习(五)- 使用Maven构建Struts2项目
- Maven学习(五)- 使用Maven构建Struts2项目
- Maven学习(五)- 使用Maven构建Struts2项目
- Maven - 构建Struts2项目
- MAVEN构建spring struts2 ibatis框架整合开发 使用包
- 使用 maven 构建 全注解spring+ hibernate4 + struts2 项目
- Maven构建struts2路径出错
- Maven的学习资料收集--(五)使用Maven构建Struts2项目
- 使用Maven构建项目
- maven构建与使用
- 使用Maven构建项目
- 小白最关心的8个UI问题
- A+B for Input-Output Practice (II)
- 程序员也有感情生活
- spring-data-redis 使用pipeline批量设置过期时间的bug
- C/C++训练1---最大公约数与最小公倍数
- 使用maven构建struts2
- vue2.0Demo
- 日志系统jar包:slf4j-api, slf4j-log4j12以及log4j
- boost库多线程(Thread)编程(线程操作,互斥体mutex,条件变量)
- 使用HTML5的两个api,前端js完成图片压缩。
- 第八周 OJ练习-5
- C# 更新 oracle 大字段 ORA-01460: 转换请求无法实施或不合理
- NIS服务器搭建(1)
- Vue.js起步学习笔记