1. Struts2的核心类库
  2. 名称 说明
  3. Struts2-core-2.3.4.jar 核心类库
  4. Xwork-core-2.3.4.jar Xwork的核心类库
  5. Ognl-3.0.5.jar Ognl表达式语言类库
  6. Freemarker-2.3.19.jar Freemarker模板语言支持类库
  7. Commons-io-2.0.1.jar 处理IO操作的工作类库
  8. Commons-fileupload-1.2.2.jar 文件上传类库
  9. Javassist-3.11.0.GA.jar 分析、编辑和创建java字节码的类库
  10. Asm-commons-3.3.jar Asm是一个java字节码处理框架,使用它可以动态生成stub类和proxy类,在java虚拟机装载类之前动态修改类的内容
  11. Asm-3.3.jar
  12. Commons-lang-3.3.1.jar 包含了一些数据类型工具类,是java.lang.*的扩展
  13. 注意:因为Struts的版本号不一样所以jar包最好的数字是版本号信息。
  14. 搭建Struts2
  15. 1、将需要的jar包都添加到项目类库中。
  16. 2、在项目的web.xml中配置struts2的拦截器信息。
  17. <!-- 配置struts2的拦截器 -->
  18. <filter>
  19. <filter-name>struts2</filter-name>
  20. <filter-class>org.apache.struts2.dispatcher.ng.filter. StrutsPrepareAndExecuteFilter</filter-class>
  21. </filter>
  22.  
  23. <filter-mapping>
  24. <filter-name>struts2</filter-name>
  25. <url-pattern>/*</url-pattern>
  26. </filter-mapping>
  27.  
  28. 3、配置struts2的struts.xml文件。Struts.xml文件是必须要放在src目录下的,也就是必须跟类放在一起。
  29. struts.xml文件错误。这种错误又分为以下几种:1,struts.xml文件名错误。一定要注意拼写问题;2,struts.xml文件放置路径错误。一定要将此文件放置在src目录下。编译成功后,要确认是否编译到classes目录中;3,struts.xml文件内容错误。下面给出一个正确的struts.xml文件以供参考。
  30. <?xml version="1.0" encoding="UTF-8" ?>
  31.  
  32. <!DOCTYPE struts PUBLIC
  33. "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
  34. "http://struts.apache.org/dtds/struts-2.5.dtd">
  35.  
  36. <struts>
  37. <package name="mypackage" extends="struts-default" >
  38. <action name="first">
  39. <result>/first.jsp</result>
  40. </action>
  41. </package>
  42. </struts>
  43.  
  44. Action对象
  45. Action对象是Struts2框架中的重要对象,主要用于处理Http请求。
  46. Action接口中包含5个静态常量:
  47. SUCCESS代表Action执行成功返回的值,返回页面。
  48. NONE代表Action执行成功,但不返回页面。
  49. ERROR代表Action执行失败,返回的值。
  50. INPUT代表action需要某个输入信息页面的返回值。
  51. LOGIN代表需要用户登录的返回值。
  52. Action的基本流程
  53. Struts2框架主要通过Struts2的过滤对象拦截HTTP请求,然后将请求分配给指定的Action处理。
  54.  
  55. 动态Action
  56. 创建UserAction类继承ActionSupport。
  57. import com.opensymphony.xwork2.ActionSupport;
  58.  
  59. public class UserAction extends ActionSupport {
  60. public String add() throws Exception{
  61.  
  62. return "add";
  63. }
  64. public String update() throws Exception{
  65.  
  66. return "update";
  67. }
  68. }
  69.  
  70. 配置struts.xml文件。
  71. <?xml version="1.0" encoding="UTF-8" ?>
  72.  
  73. <!DOCTYPE struts PUBLIC
  74. "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
  75. "http://struts.apache.org/dtds/struts-2.5.dtd">
  76.  
  77. <struts>
  78. <!-- 配置Struts支持动态Action, 必须存在 -->
  79. <constant name="struts.enable.DynamicMethodInvocation" value="true" />
  80. <!-- strict-method-invocation在2.5版本,为了限制DMI,默认启用了严格的方法访问,不想启用要改为false,如果启用严格访问模式,无法实现动态Action -->
  81. <package name="mypackage" extends="struts-default" strict-method-invocation="false">
  82. <action name="user" class="com.wgh.UserAction">
  83. <result name="add">first.jsp</result>
  84. <result name="update">update.jsp</result>
  85. </action>
  86.  
  87. </package>
  88.  
  89. </struts>
  90. 添加页面访问链接
  91. <a href="user!add">添加用户</a>
  92. <a href="user!update">修改用户</a>
  93.  
  94. Struts2的配置文件
  95. 名称 说明
  96. Struts-default.xml 位于Struts2-core-2.3.4.jar文件的org.apache.Struts2包中
  97. Struts-plugin.xml 位于Struts2提供的各个插件包
  98. Struts.xml Web应用默认的Struts2配置文件
  99. Struts.properties Struts2框架中属性配置文件
  100. Web.xml 此文件是Web应用中的web.xml文件,在其中也可以设置Struts2框架的一些信息。
  101.  
  102. <package>标签
  103. 配置好的Package可以被其他package继承。提高了配置文件的重用性。
  104. 包的属性如下:
  105. 属性 说明
  106. Name 声明包的名称,以方便在其他地方引用,属性必须
  107. Extends 用于声明继承的包,即其父包
  108. namespace 指定命名空间,即访问此包下的action需要访问的路径
  109. Abstract 将包声明为抽象类型(包中不饱和action)
  110.  
  111. <package name="mypackage" namespace="/abc" extends="struts-default" strict-method-invocation="false">
  112. <action name="user" class="com.wgh.UserAction">
  113. <result name="add">first.jsp</result>
  114. <result name="update">update.jsp</result>
  115. </action>
  116.  
  117. </package>
  118.  
  119. 访问路径
  120. <a href="abc/user!add">添加用户</a>
  121. <a href="abc/user!update">修改用户</a>
  122. 注意包设置了命名空间后,必须创建命名空间的文件夹(位于WebContent下),将访问的页面放在与命名空间对应的文件夹中。
  123.  
  124. <action>相关配置
  125. 相关属性
  126. 属性 说明
  127. Name 用于配置Action对象被请求的url映射
  128. Class 指定Action对应的类名
  129. Method 设置请求Action对象时调用该对象的哪个方法
  130. Converter 指定Action对象类型转换器类
  131.  
  132. 使用通配符简化配置
  133. *:匹配0个或多个字符。
  134. \:转义字符,如需要a者输入“\a”。
  135. Class属性获取通配符,使用{1},{2},{3}…等方式获取
  136. <action name="*" class="com.wgh.{1}">
  137. <result name="add">first.jsp</result>
  138. <result name="update">update.jsp</result>
  139. </action>
  140.  
  141. Action配置访问结果的响应<result>
  142. 属性就一个name,默认“success”。根据访问action配置类的方法返回的字符匹配name,跳转到对应的页面。
  143.  
  144. Struts2的开发模式
  145. Struts2提供了Map类型的request、session、application,可以通过ActionContext对象中获得。该对象位于com.opensymphony.xwork2包中。
  146.  
  147. 1、 实例化ActionContext
  148. public static ActionContext getContext();
  149. 2、 获取Map类型的request
  150. ActionContext对象提供的get方法
  151. Public Object get(Object obj)
  152. 实际应用
  153. Map request=ActionContext.getContext.get(“request”);
  154. 3、 获取Map类型的request
  155. 直接访问getSession()方法。
  156. Public Map getSession();
  157. 4、 获取Map类型的application
  158. 直接使用getApplication()方法获取。
  159. Public Map getApplication();
  160.  
  161. 域模型DomainModel
  162. 通过访问Action类直接方法Action类中的对象信息。
  163. private User user;
  164.  
  165. public String add() throws Exception{
  166.  
  167. return "add";
  168. }
  169.  
  170. public User getUser() {
  171. return user;
  172. }
  173. public void setUser(User user) {
  174. this.user = user;
  175. }
  176.  
  177. public String update() throws Exception{
  178.  
  179. return "update";
  180. }
  181.  
  182. 使用struts标签必须添加引用代码,放置文件的最上方。
  183. <%@taglib prefix="s" uri="/struts-tags" %>
  184.  
  185. <s:form action="abc/UserAction!add" method="post">
  186. <s:textfield name="user.name" label="用户名"></s:textfield>
  187. <s:radio name="user.sex" list="#{1:'男',0:'女'}" label="性别"></s:radio>
  188. <s:submit value="提交"></s:submit>
  189. </s:form>
  190.  
  191. 驱动模型更加简洁但需要继承接口ModelDriven。
  192.  
  193. package com.wgh;
  194.  
  195. import com.opensymphony.xwork2.ActionSupport;
  196. import com.opensymphony.xwork2.ModelDriven;
  197.  
  198. public class UserAction extends ActionSupport implements ModelDriven<User> {
  199.  
  200. private User user=new User();
  201.  
  202. public String add() throws Exception{
  203.  
  204. return "add";
  205. }
  206.  
  207. public String update() throws Exception{
  208.  
  209. return "update";
  210. }
  211.  
  212. @Override
  213. public User getModel() {
  214. // TODO Auto-generated method stub
  215. return this.user;
  216. }
  217. }
  218. 这样jsp页面就可以写成一下形势
  219.  
  220. <s:form action="abc/UserAction!add" method="post">
  221. <s:textfield name="name" label="用户名"></s:textfield>
  222. <s:radio name="sex" list="#{1:'男',0:'女'}" label="性别"></s:radio>
  223. <s:submit value="提交"></s:submit>
  224. </s:form>

Struts2的使用的更多相关文章

  1. 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

    今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...

  2. 菜鸟学Struts2——Interceptors

    昨天学习Struts2的Convention plugin,今天利用Convention plugin进行Interceptor学习,虽然是使用Convention plugin进行零配置开发,这只是 ...

  3. 菜鸟学Struts2——零配置(Convention )

    又是周末,继续Struts2的学习,之前学习了,Struts的原理,Actions以及Results,今天对对Struts的Convention Plugin进行学习,如下图: Struts Conv ...

  4. 菜鸟学Struts2——Results

    在对Struts2的Action学习之后,对Struts2的Result进行学习.主要对Struts2文档Guides中的Results分支进行学习,如下图: 1.Result Types(Resul ...

  5. 菜鸟学Struts2——Actions

    在对Struts2的工作原理学习之后,对Struts2的Action进行学习.主要对Struts2文档Guides中的Action分支进行学习,如下图: 1.Model Driven(模型驱动) St ...

  6. 菜鸟学Struts2——Struts工作原理

    在完成Struts2的HelloWorld后,对Struts2的工作原理进行学习.Struts2框架可以按照模块来划分为Servlet Filters,Struts核心模块,拦截器和用户实现部分,其中 ...

  7. 13、零配置Struts2开发

    Convention 插件 从 Struts 2.1 开始, Struts 可以使用 Convention 插件来支持零配置: Convention 插件完全抛弃配置信息, 不仅不需要使用 strut ...

  8. 12、Struts2表单重复提交

    什么是表单重复提交 表单的重复提交: 若刷新表单页面, 再提交表单不算重复提交. 在不刷新表单页面的前提下: 多次点击提交按钮 已经提交成功, 按 "回退" 之后, 再点击 &qu ...

  9. 11、Struts2 的文件上传和下载

    文件上传 表单准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置 ...

  10. 9、 Struts2验证(声明式验证、自定义验证器)

    1. 什么是Struts2 验证器 一个健壮的 web 应用程序必须确保用户输入是合法.有效的. Struts2 的输入验证 基于 XWork Validation Framework 的声明式验证: ...

随机推荐

  1. Java设计模式透析之 —— 策略(Strategy)

    今天你的leader兴致冲冲地找到你,希望你能够帮他一个小忙.他如今急着要去开会.要帮什么忙呢?你非常好奇. 他对你说.当前你们项目的数据库中有一张用户信息表.里面存放了非常用户的数据.如今须要完毕一 ...

  2. 机器学习7—AdaBoost学习笔记

    Adaboost算法原理分析和实例+代码(简明易懂)(转载) [尊重原创,转载请注明出处] http://blog.csdn.net/guyuealian/article/details/709953 ...

  3. IIS7设置默认页

    一般用ASP.NET创建的网站默认页都是Default.aspx,不需要设置. 但是如果有网站的起始页不是Default.aspx,就需要在IIS里设置了. IIS7的设置方法和IIS6的不一样: 在 ...

  4. JQ 修改样式

    //获取当前的url var url=document.location.href; var url_cn='http://www.macau-airport.com/cn/our-business/ ...

  5. java实体类如果不重写toString方法,会如何?

    先认识一下Object Object 类的 toString 方法 返回一个字符串,该字符串由类名(对象是该类的一个实例).at 标记符“@”和此对象哈希码的无符号十六进制表示组成.换句话说,该方法返 ...

  6. Photoshop经常使用快捷键(2)

    51.自由变换外框右键属性:ESC 取消 斜切:能够依照该调节边角点所引导出的两条边的角度进行移动.ctrl+shift 扭曲:随意点的调节.  ctrl 透视:模拟近大远小的关系.ctrl+shif ...

  7. kafka的并行度与JStorm性能优化

    kafka的并行度与JStorm性能优化 > Consumers Messaging traditionally has two models: queuing and publish-subs ...

  8. sudo npm install -g cnpm --registry=https://registry.npm.taobao.org

  9. NSURLSession各文件关系

    NSURLSession   通过session创建任务 @property (class, readonly, strong) NSURLSession *sharedSession; + (NSU ...

  10. zookeeper snowflake 实战

    目录 写在前面 1.1.1. 集群节点的命名服务 1.1.2. snowflake 的ID算法改造 SnowFlake算法的优点: SnowFlake算法的缺点: 写在最后 疯狂创客圈 亿级流量 高并 ...