美文网首页Java框架程序员IT
Struts2系列之-----入门

Struts2系列之-----入门

作者: RonaldoWang | 来源:发表于2016-11-29 14:04 被阅读113次

    主要内容

    • Struts2简介
    • 环境搭建
    • Struts2的执行过程及原理
    • Struts2的基本配置
    • Struts2的配置元素
    • Struts2的Action
    • 配置结果集

    Struts2简介

    Struts2是Apache发行的MVC开源框架,它只是表现层的MVC框架。

    Struts1也是Apache发行的MVC开源框架,其核心是Servlet,随着业务的增大,弊端也被不断放大。Struts2是基于WebWork的框架技术,而不是沿用Struts1的核心技术。因此,Struts2和Struts1并没有太大的关系。

    环境搭建

    1.读者去http://struts.apache.org下载最新版本的安装包。
    解压后看到

    2.新建一个web工程,导入jar包

    找到Struts2自带的例子中,struts-blank的war包,在它的\WEB-INF\lib目录下的jar包全拷贝。

    3.在src下新建一个struts.xml文件并添加dtd约束

    `<?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="p1" extends="struts-default">
    <action name="" class="" method="">
    </action>
    </package>
    </struts>`
    

    4.新建一个dtd文件夹,放入dtd

    5.为dtd配置映射

    6.配置控制器web.xml

    `   <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>`
    

    7.启动Tomcat,如果不报错,那么恭喜你环境ok了。

    Struts2的执行过程及原理

    看一下这张大图

    此图并非原创,感谢作者

    此图并非原创,感谢作者。。。。

    这张图很详细的分析了运行流程及原理

    Struts2的基本配置

    1.配置Struts框架的核心Filter(web.xml)

    `  <filter>
       //配置核心Filter的名字
        <filter-name>struts2</filter-name>
       //配置核心Filter的类名
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    
       </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        //要拦截的URL,/*指拦截所有用户
        <url-pattern>/*</url-pattern>
    </filter-mapping>`
    

    2.配置struts.xml

    `<struts>
    <package name="p1" extends="struts-default">
    <action name="" class="" method="">
    </action>
    </package>
    </struts>`
    

    package中name属性必须唯一,继承了struts-default,struts-default.xml中配置了很多内建的Bean,结果类型,拦截器,和拦截器栈,及默认的拦截器栈。Struts2框架每次都会自动加载这个struts-default.xml文件,之后再加载自己写的struts.xml文件

    Struts2的配置元素

    1.配置常量(constant)

    有3种方式

    • 在struts.properties中配置,不建议使用
    • struts.xml中配置,推荐,可以使用constant标签
    • web.xml中配置,不建议。原因是对于和Web整合的框架来说,应尽量在框架自身的文件(struts.xml)中配置和框架相关的信息

    既然有多种方式配置常量,那么加载顺序是什么呢?


    数字大的会覆盖数字小的

     设置Struts2的工作模式为开发模式,此时当修改xml文件内容时,不必重新部署Tomcat了
    
    `<constant name="struts.devMode" value="true"></constant>`
    

    2.配置包含(include)

    Struts2允许将一个配置文件分解成多个配置文件,从而达到更容易维护。

    `<include file="other.xml"></include>`
    

    注意:other.xml最好和struts.xml都放到WEB-INF/classes目录中,other.xml必须也有dtd约束等信息。

    3.配置包(package)

    `<package name="p1" extends="" namespace=""   abstract="">`
    
    • name属性必选,唯一值
    • extends属性可选
    • namespace属性可选,定义了包的命名空间
    • abstract属性可选,在当前包下是否为一个抽象包,抽象包不能包含Action

    4.配置命名空间

    上面提到的namespace属性,如果不写,默认是"",如果namespace="/test" 那么可以这么访问:http://localhost:8080/项目名称/test/动作名称.action

    5.配置拦截器

    拦截器是Struts中的非常重要的概念,这里先简单介绍。接下来的一篇文章我就是写拦截器的。

    拦截器简单点说就像Java Web应用的过滤器。就是在多个Action处理之前或之后加入开发人员自定义的代码。

    声明一个拦截器:

    `<interceptors>
    <interceptor name="loginintercepter" class="com.wty.intercepter.MyIntercepter"></interceptor>
    </interceptors>`
    

    使用拦截器:

    `<interceptor-ref name="loginintercepter"></interceptor-ref>`
    

    Struts2的Action

    `<action name="" class="">
     <result>/main.jsp</result>
     </action>`
    

    name属性:动作名称

    class属性:动作类全名。默认的动作类是:com.opensymphony.xwork2.ActionSupport
    method:动作类中的方法名称。默认是public String execute(){}
    要求:

    要求:

    • public

    • 返回值必须是String

    • 没有参数

    动作类:继承ActionSupport

    `public class RegisterUser extends ActionSupport{}`
    

    配置结果集

    1、result元素
    作用:
    为动作指定结果视图

    属性:
    name:逻辑视图的名称,对应着动作方法的返回值。
    <result name="success">/success.jsp</result>

    如果name属性不写,默认是success

    2、result元素中type的取值

    dispatcher:(默认值)
    使用请求转发,转向一个页面。

    redirect:
    使用重定向,转向一个页面。

    redirectAction:注意:使用的是重定向。

    a.重定向到另一个相同名称空间的动作。

    b.重定向到不同名称空间的动作

    chain:注意: 使用的是请求转发。

    a.转发到另一个相同名称空间的动作。

    b.请求转发到不同名称空间的动作

    结语###

    Struts2的知识点还有许多,这里只是简单的介绍一下基本概念。下一篇不出意外是写拦截器的文章吧!

    相关文章

      网友评论

        本文标题:Struts2系列之-----入门

        本文链接:https://www.haomeiwen.com/subject/duwapttx.html