初学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和拦截器需要在这个文件中注册和调用。

时间: 2024-08-10 17:17:09

初学Struts2的相关文章

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

一.简介    开发Web应用程序,首先应会遇到对用户输入数据的接收,传统的Web应用程序是由开发人员调用HttpServletRequest的getparameter(String name)方法从请求中获取数据,而Web框架都提供了数据绑定机制,由框架从请求中获取数据然后绑定到一个JavaBean对象中. Struts2提供了多种方式用于接收用户输入的数据. Struts2的action完全与Web解耦,要获取Web层的数据,需要使用ActionContext,它为action提供了一个执行

struts2 MVC模式

在学习struts2之前首先了解一下MVC模式. MVC是一个设计模式,它强制性的使应用程序的输入.处理和输出分开.使用MVC应用程序被分成三个核心部件:模型.视图.控制器.它们各自处理自己的任务.分层概念 模型(Model) 用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法.“模型”有对数据直接访问的权力,例如对数据库的访问.“模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何被操作.但是模型中数据的变化一般会通过一种刷新机制被公布.为了实现这种机制,那些用

MyEclipse下struts2配置使用和Ajax、json的配合

原创文章,转载请注明:MyEclipse下struts2配置使用和Ajax.json的配合 新手,初学struts2的配置,同时尝试与Ajax通过json交互.首先介绍MyEclipse下struts2的配置. 1.struts2的配置 右键项目,MyEclips->project facets->install apache struts(2.x)facets URL pattern我选择了*.action,libraries只选择了core 1.1撰写action 新建package,名为

struts2 web.xml配置访问404

初学Struts2,在配置完访问页面时发现访问此WEB工程的任何页面都报404错误. 发现在web.xml中只要配置filter就会出现此问题.在网上找了很多方法,发现是jar包的原因,我用的是官网下载的2.55all包,并把所有的jar包了导进去所以出现了这个问题.最终解决办法, 删除struts2-spring-plugin-2.5.5包即可

Spring4+MVC+Hibernate4全注解环境搭建(一)

声明: 以下任何观点.理解,都有可能是错的,那仅代表作者在某一时刻结合自己的学习经历和思考得出的观点,很明显,这样的前提下很多都可能是错的.请各位在看到任何可疑观点时,都不要轻信,如果你们在喷我的时候能把理由一并说出来,那我就非常感激了.像什么“你懂的”,“当然是!不然还能是什么.”那样的话恐怕既说服不了我,也说服不了别人. 目前为止我对这几个框架认识: 我的理解不一定对,但是我还是在此首先明确一下我为什么选择的是Spring4+MVC+Hibernate4. Spring就是用来提供一个IoC

Struts2初学 Struts.xml详解二

A.使用继承实现设置全局视图    package节点中还可以设置全局的视图,如:     <global-results>         <result name="err">/err.jsp</result> </global-results> 但如果其他包也想实现这样的视图,就需要使用继承的方式实现,如: <package name="base" namespace="" extend

Struts2初学笔记

一   struts的作用      把请求和响应视图分开! package 用来区分重名的情况! namespace决定了action的访问路径,默认为“” ,可以接收所有路径的action. result 默认name="success" ,返回成功! 具体视图的返回可以由用户自己定义的Action来决定,具体的手段是根据返回的字符找到对应的配置项, Struts1 Action对象只有一个,Struts2中每次访问的时候都会创建一个,解决多线程同步问题. 调用指定class中的e

maven-struts2-spring maven在struts2上搭建spring,使用依赖注入的方法

配置文件 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 3 <mo

struts2 DMI无法运行

初学struts,在学习动态方法调用的时候,写的链接为<a href="user/user!list">添加学生</a> 但是在点击链接时,出现下面这样的错误提示信息: There is no Action mapped for namespace [/user] and action name [user!add] associated with context path [/Struts2_050_ActionMethod] 查了文档才知道,原来struts