Struts 2简单介绍
2014-02-27 21:14
295 查看
一、struts2
1.概述
Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts
2的变化很小。
2. 搭建Struts2开发环境
(1)找到开发Struts2应用需要使用到的jar文件.
![](https://img-blog.csdn.net/20140227200711328?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFudGluZ21laQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
(2)编写Struts2的配置文件
Struts2默认的配置文件为struts.xml ,该文件需要存放在WEB-INF/classes下,该 文件的配置模版如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
</struts>
注意:此文件在开发的时候是放到src目录下,程序编译后会自动拷贝到WEB-INF/classes目录下。
(3)在web.xml中加入Struts2 MVC框架启动配置
在struts2中,struts框架是通过Filter启动的。他在web.xml中的配置如下:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<!-- 自从Struts 2.1.3以后,下面的FilterDispatcher已经标注为过时
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> -->
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在StrutsPrepareAndExecuteFilter的init()方法中将会读取类路径下默认的配置文件struts.xml完成初始化操作。
注意:struts2读取到struts.xml的内容后,以javabean形式存放在内存中,以后struts2对用户的每次请求处理将使用内存中的数据,而不是每次都读取struts.xml文件
3.动态方法调用
如果Action中存在多个方法时,可以使用!+方法名调用指定方法。
如果不想使用动态方法调用,可以通过常量struts.enable.DynamicMethodInvocation关闭动态方法调用。
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
4.Struts2中常用的结果类型
dispatcher:主要用于返回JSP,HTML等以页面为基础View视图,这个也是Struts2默认的Result类型。在使用dispatcher时,唯一需要指定的,是JSP或者HTML页面的位置,这个位置将被用于定位返回的页面。
注意:用于页面转发,页面跳转过程一直是同一个线程,Action中的数据一直保存在。location只能是页面,不能是另一个action
redirect:将用户重定向到一个已配置好的URL。
redirectAction:将用户重定向到一个已定义好的action。
chain 用于把相关的几个action连接起来,共同完成一个功能。
二、案例
用户登录:
struts.xml的配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="login" namespace="/login" extends="struts-default">//如果某个包没有指定namespace,则该包使用默认的命名空间,默认的命名空间总是""。struts-default定义了这些拦截器和Result类型。可以这么说:当包继承了struts-default才能使用struts2提供的核心功能。
<action name="login" class="bean.LoginAction" method="execute">
<result name="success">
/index.jsp//如果返回success跳转
</result>
<result name="error">/error.jsp</result>//如果出现错误跳转到错误界面
</action>
</package>//访问struts2中action的URL路径由两部份组成:包的命名空间+action的名称
</struts>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Struts Blank</display-name>
<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>
<welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>
LoginAction.java
package bean;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
//private static final long serialVersionUID = 1L;
private String name;
private String pass;
public String execute() throws Exception{
if(this.getName().equals("scott")&&this.getPass().equals("tiger")){
ActionContext.getContext().getSession().put("user",this.getName());
return this.SUCCESS;
}
this.addActionMessage("用戶名或密码错误");
return this.ERROR;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
1.概述
Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts
2的变化很小。
2. 搭建Struts2开发环境
(1)找到开发Struts2应用需要使用到的jar文件.
(2)编写Struts2的配置文件
Struts2默认的配置文件为struts.xml ,该文件需要存放在WEB-INF/classes下,该 文件的配置模版如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
</struts>
注意:此文件在开发的时候是放到src目录下,程序编译后会自动拷贝到WEB-INF/classes目录下。
(3)在web.xml中加入Struts2 MVC框架启动配置
在struts2中,struts框架是通过Filter启动的。他在web.xml中的配置如下:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<!-- 自从Struts 2.1.3以后,下面的FilterDispatcher已经标注为过时
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> -->
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在StrutsPrepareAndExecuteFilter的init()方法中将会读取类路径下默认的配置文件struts.xml完成初始化操作。
注意:struts2读取到struts.xml的内容后,以javabean形式存放在内存中,以后struts2对用户的每次请求处理将使用内存中的数据,而不是每次都读取struts.xml文件
3.动态方法调用
如果Action中存在多个方法时,可以使用!+方法名调用指定方法。
如果不想使用动态方法调用,可以通过常量struts.enable.DynamicMethodInvocation关闭动态方法调用。
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
4.Struts2中常用的结果类型
dispatcher:主要用于返回JSP,HTML等以页面为基础View视图,这个也是Struts2默认的Result类型。在使用dispatcher时,唯一需要指定的,是JSP或者HTML页面的位置,这个位置将被用于定位返回的页面。
注意:用于页面转发,页面跳转过程一直是同一个线程,Action中的数据一直保存在。location只能是页面,不能是另一个action
redirect:将用户重定向到一个已配置好的URL。
redirectAction:将用户重定向到一个已定义好的action。
chain 用于把相关的几个action连接起来,共同完成一个功能。
二、案例
用户登录:
struts.xml的配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="login" namespace="/login" extends="struts-default">//如果某个包没有指定namespace,则该包使用默认的命名空间,默认的命名空间总是""。struts-default定义了这些拦截器和Result类型。可以这么说:当包继承了struts-default才能使用struts2提供的核心功能。
<action name="login" class="bean.LoginAction" method="execute">
<result name="success">
/index.jsp//如果返回success跳转
</result>
<result name="error">/error.jsp</result>//如果出现错误跳转到错误界面
</action>
</package>//访问struts2中action的URL路径由两部份组成:包的命名空间+action的名称
</struts>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Struts Blank</display-name>
<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>
<welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>
LoginAction.java
package bean;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
//private static final long serialVersionUID = 1L;
private String name;
private String pass;
public String execute() throws Exception{
if(this.getName().equals("scott")&&this.getPass().equals("tiger")){
ActionContext.getContext().getSession().put("user",this.getName());
return this.SUCCESS;
}
this.addActionMessage("用戶名或密码错误");
return this.ERROR;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
相关文章推荐
- struts的简单介绍
- Struts简单介绍
- 介绍Struts 1.1 框架基本原理,以及介绍Struts 1.1 安装和一个简单的例子。
- Struts - 基于MVC设计模式的JSP (简单介绍)
- 最简单的struts实例介绍
- 2 Struts简单介绍
- Struts简单介绍
- 四:Struts拦截器简单介绍
- struts2的struts.xml简单介绍
- struts与velocity结合的简单介绍--找棵树吊死
- 【Struts1】简单介绍
- IOC介绍及其简单实现,Struts+Spring
- DSOframer 的简单介绍和资源整理
- GDB 使用简单介绍
- SAP KEY 简单介绍
- 《struts---利用struts的标签,实现简单的表单提交及校验》
- ASP.NET AJAX入门系列(6):UpdateProgress控件简单介绍
- SQLite的简单介绍
- Windbg简单介绍
- JFinal 如何进行XSS过滤(JFinal 的简单介绍到利用JFinal 的handler实现)