JavaEE(六):Struts2

一、简介

Struts2是基于MVC的轻量级的web应用框架。

运行流程:Action相当于service层,用来处理业务逻辑。

(1)客户端提交请求

(2)请求被提交到一系列过滤器(先ActionContentCleanUp,然后其他过滤器,最后FilterDispatcher

(3)FilterDispatcher咨询ActionMapper是否需要调用某个Action来处理这个请求,如果ActionMapper决定调用某个ActionFilterDispatcher则把请求的处理交给ActionProxy

(4)ActionProxy通过Configuration Managerstruts.xml)询问框架的配置文件,找到需要调用的Action类。

(5)ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action,但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)

(6)一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result

请求-> web.xml->FilterDispatcher->struts.xml->Interceptor->Action->model

二、控制器配置

1、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>   

2、struts.xml

<span style="font-size:14px;"><?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>  
    <!-- 所有匹配*.action的请求都由struts2处理 -->  
    <constant name="struts.action.extension" value="action" />  
    <!-- 是否启用开发模式 -->  
    <constant name="struts.devMode" value="true" />  
    <!-- struts配置文件改动后,是否重新加载 -->  
    <constant name="struts.configuration.xml.reload" value="true" />  
    <!-- 设置浏览器是否缓存静态内容 -->  
    <constant name="struts.serve.static.browserCache" value="false" />  
    <!-- 请求参数的编码方式 -->  
    <constant name="struts.i18n.encoding" value="utf-8" />  
    <!-- 每次HTTP请求系统都重新加载资源文件,有助于开发 -->  
    <constant name="struts.i18n.reload" value="true" />  
    <!-- 文件上传最大值 -->  
    <constant name="struts.multipart.maxSize" value="104857600" />  
    <!-- 让struts2支持动态方法调用 -->  
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />  
    <!-- Action名称中是否还是用斜线 -->  
    <constant name="struts.enable.SlashesInActionNames" value="false" />  
    <!-- 允许标签中使用表达式语法 -->  
    <constant name="struts.tag.altSyntax" value="true" />  
    <!-- 对于WebLogic,Orion,OC4J此属性应该设置成true -->  
    <constant name="struts.dispatcher.parametersWorkaround" value="false" />  
  
	<!-- package用来处理以namespace映射的请求 -->  
    <package name="basePackage" extends="struts-default" namespace="/">  
		<!-- action method默认为execute方法,一般不适用这种方式,采用通配符-->  
		<action name="user" class="com.sd.action.User" >            
			<result name="success">/success.jsp</result>        
		</action>
    </package>  
	
	<package name="user" extends="struts-default" namespace="/user">  
		<!-- action  {1}匹配name中的第一个* -->  
        <action name="User*" class="com.struts2.study.yy.UserAction" method="{1}">  
            <result>/user/user_{1}_success.jsp</result>  
        </action>  
    </package>  
  
</struts>

三、Action

Action类:

public class OneAction extends ActionSupport{   
    public String add(){
        System.out.println("add..");
        return "hello";
    }
    public String update(){
        System.out.println("update..");
        return NONE;
    }
}

struts.xml:

<package name="default" namespace="/" extends="struts-default">
        <action name="action_*" class="struts2.OneAction" method="{1}">
            <result name="hello">Hello.jsp</result>
        </action>
    </package>

四、总结

    Struts2还有拦截器等其他构件,但一般不适用,主要使用其MVC模式,但今年来慢慢被SpringMVC框架替代。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值