1、当XML配置文件引入dtd不生效,无提示时的解决方案:
上述操作完成后再选中项目,点击右键,选Validata即可,然后配置文件里就会有提示了
2、环境搭建:先jar导包,然后去web.xml里进行配置:
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注:org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter可通过快捷键Ctrl+shift+t找到相关类,然后复制类名
配置好后写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>
<include file="struts-default.xml"></include>
<include file="struts-base.xml"></include>
<include file="struts-sy.xml"></include>
</struts>
注:struts-default.xml文件是Struts2自带的,其他两个文件需要自己写
struts-base.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>
<constant name="struts.i18n.encoding" value="UTF-8" /><!-- 默认字符编码 -->
<constant name="struts.devMode" value="true" /><!-- 开发模式,如果不写则报错不会显示在页面上 -->
<constant name="struts.configuration.xml.reload" value="true" /><!-- xml配置文件修改后会不会被自动加载 -->
<constant name="struts.i18n.reload" value="true" /><!-- properties文件修改后会不会被自动加载 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" /><!-- 是否支持动态调用方法 -->
<package name="base" extends="struts-default" abstract="true">
<global-allowed-methods>regex:.*</global-allowed-methods>
</package>
</struts>
struts-sy.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>
<!--
name:给包取名,用于包继承使用
namespace:虚拟路径,用于jsp页面调用
-->
<package name="sy" extends="base" namespace="/sy"></package>
</struts>
3、jsp与子控制器相互传值的问题
- 通过传统作用域传值(application、session、request、pagecontext)
- 通过值栈(ognl)传值:set/get方法
- 通过对象导航传值
- 实现ModelDriven接口