框架初始知识:

Servlet  VS   Filter

Filter的性能更强,因为Servlet能实现的,Filter都能实现。

Filter还有拦截资源的作用 是Servlet所不能实现的。

Filter有FilterChain API,而Servlet没有对应的API。

1.包配置(package):

常用属性有:

name:必填属性,用来指定包名,以 name的值来调用此包

extends:可选属性,用来指定该包继承其他包,可以继承其他包中的Action定义、拦截器定义等。通常继承struts-default包

namespace:可选属性,用来指定该包的命名空间,如果某个包没有指定namespace属性,则该包使用默认的命名空间,默认的命名空间为"/"。

Action的搜索:http://localhost:8080/当前web应用名/namespace_value/Action_name.action

eg.  <package  name=""  extends=""  namespace="">

<!-- 定义处理请求url为login.action的Action -->

<action  name="login"  class="">

<!-- 定义处理结果字符串和资源之间的映射关系 -->

result一共有两个属性,type和name

常用的type属性值:默认是dispatcher(转发)

chain:转发到一个action

redirectAction:重定向到一个action

dispatcher:转发,则只能通过添加<param></param>的方式实现,不能通过便捷方式实现

redirect:重定向

<!--   result元素中,name就是result元素的逻辑视图名称,如果省略了name属性,系统就将采用默认的name属性值,默认的name值是SUCCESS。结果类型有如下几种:(引用自慕课网)

Struts2通过在struts.xml文件中使用<result …/>元素来配置结果。Struts2提供了两种结果。
 局部结果:将<result …/>作为<action …>元素的子元素配置。
 全局结果:将<result …/>作为<global-results …>元素的子元素配置。
在package元素中配置<global-results>子元素:
<global-results>
 <result name="error">/Error.jsp</result>
 <result name="invalid.token">/Error.jsp</result>
 <result name="login" type="redirect-action">Logon!input</result>
</global-results>

-->

<result  name="login">/login.jsp</result>

</action>

</package>

2.解决struts.xml中内容过多的问题:将一个配置文件分解为多个配置文件,那么在struts.xml中必须包含其他xml文件(include):

<struts>

<include file="struts-user.xml"></include>

<include file="struts-book.xml"></include>

    .

   .

   .

</struts>

3.Action:action必须放在一个指定的包空间下定义,action代表一个struts2的请求,name属性相当于一个servlet  path

Action的搜索顺序:

4.动态方法调用:动态方法调用解决了一个包空间内action过多的问题,一个action可以对应多个请求的处理

注意:要使用动态方法调用,必须设置struts.enable.DynamicMethodInvocation常量来完成,该常量属性的默认值是true。

4.1  感叹号方式:

4.2  通配符方式:把method的属性指定为{数字}的形式,其他属性中包含method属性的可使用此来代替,其中{数字}表示它的值是name属性值中第几(数字)个*的值。在struts.xml文件中配置<action…>元素时,它的name、class、method属性都可支持通配符。

使用前:

<struts>

<package>

<action name="user_save"   class="cn.save.User"   method="save">

<result name="save">/save.jsp</result>

</action>

</package>

</struts>

使用后:

<struts>

<package>

<action name="user_* "   class="cn.{1}.User"   method="{1}">

<result name="{1}">/{1}.jsp</result>

</action>

</package>

</struts>

总结:通配符映射规则,若找到多个匹配,将选择没有通配符的那个进行执行。

若找到多个带有通配符的匹配,则按先后顺序进行选择

5.struts2的请求和响应过程:

6.常量配置:

Struts2框架有两个核心配置文件,其中struts.xml文件主要负责管理应用中的Action映射, 及Action处理结果和物理资源之间的映射关系。除此之外,Struts2框架还包含了一个struts.properties文件,该文件定义了Struts2框架的大量常量属性。但通常推荐也是在struts.xml文件中来配置这些常量属性。

<struts>

<constant   name=""   value=""  ></constant>

</struts>

struts2受理的请求扩展名问题:

Struts2.xml的配置的更多相关文章

  1. struts2.xml的配置与技巧

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-/ ...

  2. struts2 xml配置文件配置传参数

    传参方式 重定向 第一方式: <action name="search" method="search"            class="c ...

  3. Struts2 web.xml文件配置

    在导入了项目需要使用的核心jar包之后需要在web.xml中配置Struts. 1. Struts2的知识点普及: Struts2共有5类配置文件,分别罗列如下: 1), Web.xml; 在没有使用 ...

  4. struts2在web.xml中配置详情

    web.xml是web应用中载入有关servlet信息的重要配置文件,起着初始化servlet,filter等web程序的作用. 通常,全部的MVC框架都须要Web应用载入一个核心控制器.那採取什么方 ...

  5. IT忍者神龟之Struts2.xml配置全然正确流程能走通可是有红叉解决

    一:Multiple annotations found at this line:Undefined actionName  parameter  Undefined actionnamespace ...

  6. JavaWeb_(Struts2框架)struts.xml核心配置、动态方法调用、结果集的处理

    此系列博文基于同一个项目已上传至github 传送门 JavaWeb_(Struts2框架)Struts创建Action的三种方式 传送门 JavaWeb_(Struts2框架)struts.xml核 ...

  7. struts2 在 Action 或 Interceptor 中获取 web.xml 中配置的 <context-param> 参数 (这是我的第一篇博文,哈哈。)

    最近为了改一个问题,想加一个控制开关,就在web.xml 中配置了一个 <context-param> 参数,并在 Action 或 Interceptor 中获取参数值. 1.在 web ...

  8. Struts2入门(二)——配置拦截器

    一.前言 之前便了解过,Struts 2的核心控制器是一个Filter过滤器,负责拦截所有的用户请求,当用户请求发送过来时,会去检测struts.xml是否存在这个action,如果存在,服务器便会自 ...

  9. Struts2 拦截器配置以及实现

    @(Java ThirdParty)[Struts|Interceptor] Struts2 拦截器配置以及实现 Struts2的拦截器应用于Action,可以在执行Action的方法之前,之后或者两 ...

随机推荐

  1. ReentrantReadWriteLock的相关使用

    ReentrantLock具有完全互斥排他的效果,同一时间只有一个线程执行ReentrantLock.lock()方法后面的任务,这样虽然能够保证线程安全性,但是效率是比较低的 ReentrantRe ...

  2. MySQL锁机制浅析

    MySQL使用了3种锁机制 行级锁,开销大,加锁慢,会出现死锁,发生锁冲突的概率最高,并发度也最高 表级锁,开销小,加锁快,不会出现死锁,发生锁冲突的概率最低,并发度最低 页级锁,开销和加锁时间界于表 ...

  3. VS2013+Opencv3.3配置教程

    转载自: https://blog.csdn.net/u014797226/article/details/78283873?locationNum=5&fps=1 参考博文1: 操作环境: ...

  4. iptables 防火墙(上)

    iptables 防火墙(上) 1. 防火墙概述 1.1 概念与作用 网络中的防火墙是一种将内部网络和外部网络分开的方法,是一种隔离技术.防火墙在内网与外网通信时进行访问控制,依据所设置的规则对数据包 ...

  5. windows server 2016 支持多用户远程登录

    服务器设置多用户同时远程桌面,可以提高访问效率,避免人多抢登服务器. 1. 首先需要先安装远程桌面服务  配置组策略,运行框输入gpedit.msc,打开计算机配置–>管理模板—>wind ...

  6. [转载]图文详解YUV420数据格式

    原博主的博客为:https://www.cnblogs.com/azraelly/archive/2013/01/01/2841269.html YUV格式有两大类:planar和packed.对于p ...

  7. Python-UiAutomator2实现Android自动化测试

    本帖转自搜狗测试公众号 [一.前言]        基于Python-UiAutomator2实现Android自动化测试,小编在Android应用的自动化性能测试中进行了实践.本篇将简单介绍pyth ...

  8. React 表单元素实例

    代码实例: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=" ...

  9. php 学习一 变量的定义

    //php有如下几种数据类型 // false true boolean类型 //integer int 整数 //float 浮点数就是小数 //string 字符串 //string null 空 ...

  10. 设置overflow:auto无效的解决办法

    做项目中经常要用到滚动条,有时候给div设置overflow无效. 遇到这样的问题,只需要在 F12 Elements面板检查一下要设置overflow的元素的宽高是否大于父级元素宽高. (overf ...