struts2路径,常量,等一些xml配置文件

  最近正好有时间总结一下,过去的知识历程,虽说东西都是入门级的,高手肯定是不屑一顾了,但是对于初次涉猎的小白们,还是可以提供点参考的。

  struts2其实就是为我们封装了servlet,简化了jsp跳转的复杂操作,并且提供了易于编写的标签,可以快速开发view层的代码。

  过去,我们用jsp和servlet搭配,实现展现时,大体的过程是:

  1 jsp触发action

  2 servlet接受action,交给后台class处理

  3 后台class跳转到其他的jsp,实现数据展现

  Struts 2 体系结构 :

  1、Web浏览器请求一个资源。

  2、过滤器Dispatcher查找方法,确定适当的Action。

  3、拦截器自动对请求应用通用功能,如验证和文件上传操作。

  4、Action的execute方法通常用来存储和重新获得信息。

  5、结果被返回到浏览器。

  搭建Struts 2 开发环境

  1、找到开发Struts 2的应用需要用到的jar包。

  2、编写Struts 2的配置文件。

<struts>
<!-- 
  <package>元素有如下属性:
    name:包的名称。必须配置
    extends:要继承的包,后面配置的是被继承的包的名称。(最好加上防止出现莫名其妙的错误)
    namespace:包的命名空间。可选
    abstract:定义包为抽象的,也就是不能包含Action的定义。可选
 -->
<package name="hello" namespace="/" extends="struts-default">
	<action name="hello" class="com.hyxd.action.HelloAction" method="hello">
		<result name="success">/index.jsp</result>
	</action>
</package>
</struts>

  3、在web.xml中加入Struts 2 MVC启动框架配置。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 引入struts核心过滤器 -->
<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>
</web-app>

  开发Struts 2 最少用到的jar文件:

  Struts-core-2.x.x.jar : Struts 2 框架的核心类库

  xwork-2.x.x.jar : XWork类库,Struts 2 在其上构建

  ognl-2.6.x.jar : Object Graph Navigation Language , Struts 2 框架通过其读写对象的属性。

  freemarker-2.3.x.jar : Struts 2 的UI标签的模版使用 Freemarker编写。

  commons-logging-1.1.x.jar : ASF出品的日志包。

  commons-fileupload-1.2.1.jar : 文件上传组件。

路径后缀问题:

      先通过struts2的配置文件看看默认的路径后缀都有哪些。

struts.action.extension=action,,这个是struts2的默认后缀名空格或.action.我们也可以将其修改为其他形式

<struts>
<!-- name=key(对应的拦截器) value=value(你要设置的后缀名) -->
<constant name="struts.action.extension" value="do,action,html,,"></constant>
</struts>
通配符问题

在开发当中有很多的时候在调用同一个方法,和同一个页面,你需要写一堆的struts的配置信息,为了方便开发apache为struts提供了通配符

*:但不包括 / 字符. 如果想把 / 字符包括在内, 需要使用 **. 如果需要对某个字符进行转义, 需要使用 \.

{1}:这是作为占位符使用的,它将被通配符所匹配的值替换

<struts>
	<package name="helloAction" extends="struts-default" namespace="/">
		<action name="*" class="com.hyxd.user.UserAction" method="{1}">
			<result name="login">/error.jsp</result>
		</action>
	</package>
</struts>
动态方法调用

        动态方法调用: 通过 url 动态调用 Action 中的方法,如果Action中存在多个方法时,我们可以使用!+方法名调用指定方法。默认情况下, Struts 的动态方法调用处于激活状态, 若想禁用该功能, 则可以在 struts.xml 文件中添加如下 constant 元素:

<struts>
<!-- key=DynamicMethodlnvocation拦截器  value=false -->
<constant name="struts.action.DynamicMethodlnvocation" value="false"></constant>
</struts>
使用动态调用:
<form action="${pageContext.request.contextPath }/UserAction!add" method="post">
   	   用户名: <input type="text" name="user.name"> <br/>
   	 密码: <input type="text" name="user.pwd"> <br/>
   	   <input type="submit" value="添加"> <br/>
   	</form>

<struts>
	<package name="user" extends="struts-default" namespace="/">
		<action name="UserAction" class="com.hyxd.user.UserAction">
			<result name="success">/index.jsp</result>
		</action>
	</package>
</struts>
结果:



全局定义

     当多个action中都使用到了相同result,为了避免result的重复,这时我们应该把result定义为全局结果。

<struts>
	<!-- 如果全局和局部有同名的result,那么局部会覆盖全局的result。
	同一个应用中每次请求Struts2框架都会创建一个新的Action实例 -->
	<package name="user" extends="struts-default" namespace="/">
		<global-results>
			<result name="save">/index.jsp</result>
		</global-results>
		<action name="UserAction" class="com.hyxd.user.UserAction">
		</action>
	</package>
</struts>


待续










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值