一个框架配置文件是使用它的核心所以有很大的必要了解
配置文件(分多个文件配置是为了分组开发)
- 记住struts的配置文件要配置到src根目录下
-
struts-base.xml文件详解这是struts2的基础配置文件必须的
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <!-- 设置编码格式 --> <constant name="struts.i18n.encoding" value="UTF-8" /> <!-- 用于jsp调试,配置这个jsp会报Struts的错 --> <constant name="struts.devMode" value="true" /> <constant name="struts.configuration.xml.reload" value="true" /> <constant name="struts.i18n.reload" value="true" /> <!-- 动态方法调用 --> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <!-- name 是必须配置的 Package的表示,为了让其他的package引用 --> <!-- extends 否 从哪个package继承行为 --> <!-- namespace 否 参考Namespace配置说明 --> <!-- abstract 否 --> <!-- 定义这个package为抽象的,这个package中不需要定义action --> <!-- 这里是因为分组开发所以将 --> <package name="base" extends="struts-default" abstract="true"> <!-- struts2.5之后动态调用需要匹配正则 不是很推荐使用 2.5之前不需要添加 --> <global-allowed-methods>regex:.*</global-allowed-methods> </package> </struts>
用户基础文件struts-xx.xml分组开发时多个文件的配置
配置这个文件继承于刚才配置的基础文件用来配置action
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- name 是必须配置的 Package的表示,为了让其他的package引用 -->
<!-- extends 否 从哪个package继承行为 -->
<!-- namespace配置之后方便分组开发 然后配置之后请求的时候注意加上名字空间的值 -->
<package name="sy" extends="base" namespace="/sy">
<action name="请求的action" class="你写的类的全路径限定名" method="方法名">
<!-- 结果码的处理 -->
<result name="方法返回值">/跳转地址</result>
</action>
<!-- {1}代表* jsp写法nameaction_add method的值会自动转变为add-->
<!-- *可以有多个 -->
<action name="nameaction_*_*" class="你写的类的全路径限定名" method="{1}">
<!-- 结果码的处理 -->
<result name="方法返回值">/跳转地址</result>
</action>
</package>
</struts>
最后配置一个struts.xml文件这样能够很好的解决分组开发冲突问题
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- struts的基本xml文件 -->
<include file="struts-default.xml"></include>
<!-- 刚才的基本文件 -->
<include file="struts-base.xml"></include>
<!-- n个配置文件 -->
<include file="struts-sy.xml"></include>
</struts>
当然如果不想这么写可以配置到一个struts.xml文件中
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="Login" class="com.rcnjtech.action.LoginAction">
<result name="success">/success.jsp</result>
<result name="login">/index.jsp</result>
</action>
</package>
</struts>
配置web.xml struts2过滤器
Idea是直接会生成的不需要配置,eclipse的全路径限定名可以通过ctrl+shift+t
可以直接搜索StrutsPrepareAndExecuteFilte找到全路径限定名
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Struts</display-name>
<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>