一、Struts应用环境搭建
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> |
struts.xml文件配置
<struts> <!-- 请求参数的编码方式 --> <constant name="struts.i18n.encoding" value="UTF-8"/> <!-- 指定被struts2处理的请求后缀类型。多个用逗号隔开 --> <constant name="struts.action.extension" value="action,do,htm"/> <!-- 当struts.xml改动后,是否重新加载。默认值为false(生产环境下使用),开发阶段最好打开 --> <constant name="struts.configuration.xml.reload" value="true"/> <!-- 是否使用struts的开发模式。开发模式会有更多的调试信息。默认值为false(生产环境下使用),开发阶段最好打开 --> <constant name="struts.devMode" value="true"/> <!-- 设置浏览器是否缓存静态内容。默认值为true(生产环境下使用),开发阶段最好关闭 --> <constant name="struts.serve.static.browserCache" value="false" /> <!-- 指定由spring负责action对象的创建 <constant name="struts.objectFactory" value="spring" /> --> <!-- 是否开启动态方法调用 --> <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<package name="feifei" namespace="/feifei" extends="struts-default"> <action name="helloStruts-*" method="{1}" class="feifei.HelloStrutsAction"> <result name="success">/welcome.jsp</result> </action> </package>
</struts> |
Pom.xml文件配置
<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.3.16.1</version> </dependency> |
HelloStrutsAction --Action类文件
public class HelloStrutsAction extends ActionSupport {} |
主要代码位置
进行表单属性性封装
OgnlValueStack.java -- getValue,setValue OgnlRuntime.java -- getWriteMethod SimpleNode.java ObjectPropertyAccessor.java -- setPossibleProperty set值里的方法代理 XWorkBasicConverter.java -- convertValue -- 76 类型转换类,行
ExcludedPatterns.java 参数过滤默认值基本类
|
二、关于Tomcat
%tomcat-home%/conf/web.xml
设置列文件列表 <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> |
%tomcat-home%/conf/server.xml
<Host name="localhost" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="F:\src\main\webapp" debug="0" reloadable="true"/> </Host> |
class['classLoader']['resources']['dirContext']['docBase']=path/path
class.classLoader.resources.dirContext.docBase=path/path
docBase参数有三种地址路径部署方式:
1.相对路径:以Tomcat的webapps目录为更目录
2.绝对路径:如,c://web/部署的应用目录
但,还有一种地址配置方式,大家可能不会常用,那就是UNC path(tomcat是支持远程网络路径方式的):
3.UNC path(如,远程共享一个标准的J2EE应用目录)
具体看这里:http://wiki.apache.org/tomcat/FAQ/Windows#Q6
三、关于resin
类加载器: EnvironmentClassLoader.java
Main函数类:com.caucho.server.resin.Resin.java
启动命令:
java -jar resin.jar [-options] [start | stop | restart] -conf %RESIN_HOME%/conf/resin.conf -log-directory %RESIN_HOME%/log/ -resin-home %RESIN_HOME% -root-directory -server -watchdog-port -verbose
|
<web-app id="" document-directory="F:\workspace\webapp" />
|
class['classLoader']['loaders'][0]=