Struts初步入门(四)

1.默认Action-深入Struts

struts.xml 文件:

  

<struts>

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

<default-action-ref name="index"></default-action-ref>

<action name="index">
<result>error.jsp</result>
</action>

<action name="*_*_*" method="{2}" class ="com.imooc.{3}.{1}Action">
<result>/result.jsp</result>
<result name="add">/{2}.jsp</result>
<result name="update">/{2}.jsp</result>
</action>


</package>
</struts>
默认action配置,需要在xml文件中配置:
  <default-action-ref name="index"></default-action-ref>

<action name="index">
<result>error.jsp</result>
</action>
其中 default-action-ref的name,和action的name 必须相同,同上。

遇到报错误500如下:HTTP Status 500 - Unable to instantiate Action, com.imooc.Action.HelloWorlsddAction, defined for 'HelloWorlsdd' in namespace '/'com.imooc.Action.HelloWorlsddAction,
未解决之前,xml文件配置为如下:
  

  <struts>


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


         <default-action-ref name="index"></default-action-ref>


         <action name="index" >


          <result>/error.jsp</result>


         </action>


         <action name="*_*" method="{2}" class="com.imooc.Action.{1}Action">


          <result>/result.jsp</result>


          <result name="add">/{2}.jsp</result>


          <result name="update">/{2}.jsp</result>


     </action>

 </package>


</struts>

原因为:把包名未写为通配符,解决办法把包名也写成通配符替换就可以了,如下:


<struts>

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

<default-action-ref name="index"></default-action-ref>

<action name="index">
<result>error.jsp</result>
</action>

<action name="*_*_*" method="{2}" class ="com.imooc.{3}.{1}Action">
<result>/result.jsp</result>
<result name="add">/{2}.jsp</result>
<result name="update">/{2}.jsp</result>
</action>


</package>
</struts>
访问网址:

2.strut2后缀
为了改变访问Struts后缀,有三种方式改变:(1)在Struts.xml文件里,<struts></struts>里添加
<constant name="struts.action.extension" value="do"></constant>,value值可以为"do","html","action"
(2)在struts.properties里配置,内容如下:
#指定默认编码集,对于请求参数带有中文的情况应该设置陈GBK或GB2312.默认值UTF-8
struts.i18n.encoding=GB2312

#是否每次HTTP请求到达时,都重新加载国际化资源文件。默认值false

struts.i18n.reload=true

#但struts.xml改动后,是否重新加载该文件。在开发阶段建议将此属性设置为“true”,提高开发效率。默认值false

struts.configuration.xml.reload=true

#是否使用Struts2的开发模式,可以获得更多报错信息,便于调试。在开发阶段设置为true。默认值false

struts.devMode = true

#设置浏览器是否缓存静态页面。开发阶段设置为false,以获得服务器的最新响应。默认值true

struts.serve.static.browserCache=true

#指定后缀为.action形式的请求可被Struts2处理。可配置多个请求后缀,比如.do、.struts2等,配置时多个后缀名用逗号隔开

struts.action.extension=action,do,struts2,

#配置服务器运行时的端口号。一般情况下该属性不修改,如果端口号占用则重新分配端口号。默认值80

struts.url.http.port = 8080
(3)在web.xml文件里配置,如下,红色标注(不常用)

<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>struts.action.extension</param-name>
<param-value>do</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
 
 
 
 
 
原文地址:https://www.cnblogs.com/aiyamoer/p/8778391.html