初学Struts2

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学Struts2相关的知识,希望对你有一定的参考价值。

最开始学struts2的时候感觉无从下手。然后照着教程撸了个小项目,开始有点感觉了。

 

一、Struts2请求响应流程(工作原理):参考自:http://blog.csdn.net/wuwenxiang91322/article/details/11070513

 

在struts2的应用中,从用户请求到服务器返回相应响应给用户端的过程中,包含了许多组件如:Controller、ActionProxy、ActionMapping、Configuration Manager、ActionInvocation、Inerceptor、Action、Result等。下面我们来具体看看这些组件有什么联系,它们之间是怎样在一起工作的。

技术分享

 

 

(1)  客户端(Client)向Action发用一个请求(Request)

(2)  Container通过web.xml映射请求,并获得控制器(Controller)的名字

(3)  容器(Container)调用控制器(StrutsPrepareAndExecuteFilter或FilterDispatcher)。在Struts2.1以前调用FilterDispatcher,Struts2.1以后调用StrutsPrepareAndExecuteFilter

(4)  控制器(Controller)通过ActionMapper获得Action的信息

(5)  控制器(Controller)调用ActionProxy

(6)  ActionProxy读取struts.xml文件获取action和interceptor stack的信息。

(7)  ActionProxy把request请求传递给ActionInvocation

(8)  ActionInvocation依次调用action和interceptor

(9)  根据action的配置信息,产生result

(10) Result信息返回给ActionInvocation

(11) 产生一个HttpServletResponse响应

(12) 产生的响应行为发送给客服端。

 

二、struts2环境搭建

 我使用的是struts2.5.2

1、准备所需的JAR包:

技术分享

在这个版本中xwork这个jar包被放在struts2-core-2.5.2.jar中。

注意,下载的sturts2下有很多的JAR包。不要全部拷过去,因为里面有很多的第三方JAR包。如果没有导入第三方JAR包导入依赖的JAR包,则会报错。

2、在WEB.XML中配置sturts2启动代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>    
  <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
  </welcome-file-list>
  <filter>
      <filter-name>struts2</filter-name>
      <filter-class>
          org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
      </filter-class>
  </filter>
  <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping></web-app>

 

org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter的init方法会在web-inf/classes下寻找struts.xml配置文件。我们还未建立此文件,因此。下一步我们将建立此文件。

 

3、建立sturts.xml配置文件
上面说道StrutsPrepareAndExecuteFilter的Init在web-inf/calsses下寻找sturs.xml文件,而我们只需要在src目录下建立此文件即可。编译后会自动输出到classese目录下:
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>

    <constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>
    <constant name="struts.devMode" value="true"></constant>
    
    <package name="default" namespace="/" extends="struts-default">
        <!-- 注册拦截器 -->
        <interceptors>
            <interceptor name="authi" class="interceptor.authInterceptor"></interceptor>
            <!-- 自定义拦截器栈 -->
            <interceptor-stack name="myStack">
                <interceptor-ref name="defaultStack"></interceptor-ref>
                <interceptor-ref name="authi"></interceptor-ref>
            </interceptor-stack>
        </interceptors>
        
        <action name="auth">
            <result>/WEB-INF/pages/manager.jsp</result>
            <result name="login">/login.jsp</result>
            <!-- 引用自定义拦截器栈 -->
            <interceptor-ref name="myStack"></interceptor-ref>
        </action>
        
        <action name="login" class="action.loginAction" method="login">
            <result name="success">/WEB-INF/pages/manager.jsp</result>
            <result name="error">/login.jsp</result>
        </action>
    </package>
    
</struts>    

创建之后,action和拦截器需要在这个文件中注册和调用。

以上是关于初学Struts2的主要内容,如果未能解决你的问题,请参考以下文章

Struts2初学 Struts2的action接收用户数据方式

Struts2初学 Struts.xml详解二

初学者做java的设置用户权限让管理员和用户登录不同界面

基于初学者的SSHstruts2 值栈的详解与struts2标签库+ognl表达式

PHP必用代码片段

针对java初学者以及自学者的一套学习教材(已更新完至struts2框架)