struts2框架配置文件详解

配置文件详解

这里写了struts2的配置以及后台跳转页面 ajax请求在写一篇博客里

先在这里写一个完整的配置下面的是一小块一小块的,我也不知道为啥我这里直接放代码会出现乱码所以就放图片吧

struts2框架配置文件详解_第1张图片

下面的图截出来项目的路径结构 方便去看清楚在主配置文件中怎么去加载另外的配置文件

struts2框架配置文件详解_第2张图片

web.xml

struts2框架配置文件详解_第3张图片

Struts.xml

namespace对应的地址

struts2框架配置文件详解_第4张图片

(1)  package配置详解


<package name="hello"namespace="/hello" extends="struts-default">

(2)  action配置


<action name="helloAction"class="cn.hd.hello.HelloAction" method="hello">
   

    <result name="success" type="redirect">/hello.htmlresult>

(3)include 在src struts.xml可以去读取其他位置的xml配置文件要求新创建的 xml必须有约束文件

常量配置

常量配置就是在配置文件中配置一些常量 当然自己去不去配置也可以用 框架内部是有默认的常量的如果配置了常量就会优先使用用户配置的常量 配置常量的方法有多中

默认的常量配置 在struts2的核心包下的

struts2框架配置文件详解_第5张图片

默认常量的配置的文件名是default.propertites

   如何修改这些常量

(1)  在struts.xml中去修改


<constant name="struts.i18n.encoding"value="UTF-8">constant>

(2)  在src目录下 创建struts.properties文件直接在该文件中 去修改常量即可

struts2框架配置文件详解_第6张图片

(3)  在web.xml文件中去修改 添加一个context-param。在param-name中书写常量名,在param-value中书写常量值

struts2框架配置文件详解_第7张图片

三个地方都可以同时修改哪个生效?web.xml>struts.propertise>struts.xml

推荐使用第一个

常用的常量

(1)struts.i18n.encoding设置编码,解决了post请求的乱码问题

name="struts.i18n.encoding"value="UTF-8"

(2)扩展名struts.action.extension设置action的访问扩展名


<constant name="struts.action.extension"value="do,,">constant>

(3)struts.devMode设置开发者模式 默认关闭


<constant name="struts.devMode"value="true">constant>

3高级配置

为什么使用动态方法

为什么使用动态方法因为当一个类中的方法多的时候就需要在一个package中配置多个action代码比较繁琐为了简便所以有动态方法,可以用传参的方法告诉它调用哪个方法

动态方法

(1)推荐使用

<action name="userAction_*" class="cn.hd.dynamic.UserAction"method="{1}">
   
<result name="success">/hello.htmlresult>
action>

Action配置中的name属性这个属性 决定着浏览器的访问地址

测试的时候在浏览器的路径中 输入action的name值+*+方法名(Action中的方法名)

Struts2可以采用通配符的方式去读取method{1}会自动将路径中userAction……配置到method中



花括号中数字代表第几个星号 需要在method那里填充什么传参的时候就传入什么 星号之间最好用一个符号隔开不一定要用下划线,例如默认的就是用的叹号,用符号隔开的好处是当有多个星号是可以识别

当然这里可以配置多个星号 

<action name="userAction_*_*_*" class="cn.hd.dynamic.{2}Action"method="{1}">
    
<result name="success">/{3}hello.htmlresult>

action>

注意:这种方法在struts2的高版本(2.5以上)中会无效 只是版本高了安全一点如果没有设置就不能用

  首先你也要开启动态方法,然后增加allowed-methods

<action name="userAction_*" class="cn.hd.dynamic.UserAction" method="{1}">
    <result name="success">/hello.htmlresult>
    <allowed-methods>updata,delete,add,queryallowed-methods>
action>

(2)开启动态方法

首先开启动态方法的常量这种方法是默认的

<constant name="struts.enable.DynamicMethodInvocation" value="true">constant>

<action name="userAction" class="cn.hd.dynamic.UserAction">
    <result name="success">/hello.htmlresult>

    <allowed-methods>updata,delete,add,queryallowed-methods>

action>

    将action中的method删掉 访问的时候action名字后面加!叹号后面跟方法名

完成了动态方法的开启

  测试的时候在浏览器的路径中 输入action的name值+!+方法名(Action中的方法名)

4默认配置(了解)

默认的action配置


<action name="defaultAction">
   
<result>/hello.htmlresult>
action>

设置默认的action地址(也就是说如果action地址错误会去自动的访问这里配置的)


<default-action-ref name="defaultAction">default-action-ref>

你可能感兴趣的:(struts2框架配置文件详解)