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

来源:互联网 发布:python语言基本语句 编辑:程序博客网 时间:2024/05/26 19:18

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

  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
原创粉丝点击