您的位置:首页 > 编程语言 > Java开发

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文件.

           


     (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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: