腊月的季节

JavaSSH框架初步

Struts2核心包

asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-lang3-3.1.jar
commons-loggin-1.1.1.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
ognl-3.0.5.jar
strut2-core-2.3.4.jar
xwork-core-2.3.4.jar

Struts action的包控制

1
2
3
4
5
6
7
8
<package name="train" namespace="/" extends="struts-default">
<action name="hello" class="com.train.struts.HelloWorld">
<result name="success">/hello_world.jsp</result>
</action>
<action name="login" class="com.train.action.UserAction" method="login">
<result name="success">/hello_world.jsp</result>
</action>
</package>

package表示一个包,name是包名,这个主要用于以后的包继承,namescpace是命名空间,这个主要是跟随在url访问路由后面,extends是继承,一般一个action包都要继承Struts-default或者json-default才能实现各种拦截,因为Struts-default或json-default有很多拦截器。
action表示一个行为,name是行为命,也就是客户端指示要做的行为,class是处理这个行为的类,method是在这个类里面用哪个方法处理这个行为。
result是处理方法返回的结果并交给视图,name是规定哪个result处理这个行为,并转交给jsp或html。

Struts.xml默认值

如果没有为action class指定类默认为ActionSupport类。
如果没有为action method指定方法默认为execute方法。
如果没有为result name指定视图名默认为success名。

Struts2视图详解

视图转发有dispatcher,redirect,redirectAction,plainText
通过$(username)访问类里面的属性,类里面的属性必须有get方法。
通过<%=%>进行java代码嵌入完成jsp
url传递中文。
url编码:URLEncoder.encode(“”,”编码方式”);对字符串进行编码。
URLDecoder.decode(“”,”解码方式”);对字符串进行解码。
全视图:

1
2
3
<global-results>
<result name="message">/WEB-INF/page/message.jsp</result>
</global-results>

不同包访问全视图:
继承包

重定向

默认转发

1
<result name="success">/WEB-INF/jsp/home.jsp</result>

浏览器重定向

1
<result name="success" type="redirect">/WEB-INF/jsp/home.jsp</result>

服务端请求转发Action

1
<result name="success" type="redirectAction">Action名称</result>

服务端请求转发不同包的Action(param标签主要用来注入值)

1
2
3
4
<result name="success" type="redirectAction">
<param name="actionName">XXX</param>
<param name="namespace">/control/department</param>
</result>

路径搜索。
原样显示出内容。

1
2
3
<result name="success" type="plainText">
/WEB-INF/page/yuandaima.jsp
</result>

解决中文乱码问题,注入参数。

1
2
3
4
<result name="resource" type="plainText">
<param name="location">/xxx.jsp<param>
<param name="charSet">UTF-8<param>
</result>

类注入值

1
2
3
4
<action name="list" class="cn.itcast.action.HelloWorld" extends="struts-default">
<param name="savepath">/images</param>
<result name="success">/WEB-INF/page/message.jsp><result>
</action>

struts2常量配置

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

使访问的后缀从.action 变为.do
struts2加载常量顺序
struts-default.xml
struts-plugin.xml
struts.xml
struts.properties
web.xml
如果定义了多个,则按此顺序加载。
常用配置常量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
指定默认编码集,作用于HTTPServerRequest的setCharacterEncoding方法和freemarker、velocity的输出
<constant name="struts.i18n.encoding" value="UTF-8"/>
该属性指定需要Struts2处理的请求后缀,该属性的默认值为action,即所有匹配*.action的请求都由Struts2处理。如果用户需要指定多个请求后缀,则多个后缀之间以英文符号(,)隔开。
<constant name="struts.action.extension" value="do"/>
设置浏览器是否缓存静态内容,默认值为true(生产环境使用),开发阶段最好关闭。
<constant name="struts.serve.static.browserCache" value="false"/>
当Struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开
<constant name="struts.configuration.xml.reload" value="false"/>
开发模式下使用,这样可以打印更详细的错误
<constant name="struts.devMode" value="true"/>
默认的视图主题
<constant name="struts.ui.theme" value="simple"/>
与spring集成时,指定由spring负责action对象的创建
<constant name="struts.objectFactory" value="spring"/>
该属性设置struts2是否支持动态方法调用,该属性的默认值为true,如果需要关闭动态方法调用,则可设置为false。
<contant name="struts.enable.DynamicMathodInvocation" value="false"/>
上传文件的大小限制
<contant name="struts.multipart.maxSize" value="10701096"/>

Struts2处理流程

通过web.xml过滤所有路径(filter标签),如果匹配进入Struts2框架,接着进入StrutsPrepareAndExecuteFilter->Interceptor->Action->Result->Jsp/Html

热评文章