- 浏览: 1501093 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (798)
- struts2 (42)
- servlet (20)
- quartz (4)
- jquery & ajax (24)
- tomcat (5)
- javascript (15)
- struts1 (8)
- 搜索关键字及链接 (3)
- fckeditor (3)
- Apache (5)
- spring (22)
- linux (3)
- 企业应用 (8)
- 综合应用 (13)
- 服务器 (2)
- 数据库 (85)
- 性能调优 (21)
- 网络应用 (15)
- 缓存技术 (8)
- 设计模式 (39)
- 面试题 (7)
- 程序人生&前辈程序员 (29)
- java基础 (59)
- hibernate (75)
- log4j (4)
- http (11)
- 架构设计 (28)
- 网页设计 (12)
- java邮件 (4)
- 相关工具 (11)
- ognl (7)
- 工作笔记 (18)
- 知识面扩展 (12)
- oracle异常 (1)
- 正则表达式 (2)
- java异常 (5)
- 项目实践&管理 (1)
- 专业术语 (11)
- 网站参考 (1)
- 论坛话题 (2)
- web应用 (11)
- cxf&webservice (22)
- freemarker (3)
- 开源项目 (9)
- eos (1)
- ibatis (6)
- 自定义标签 (3)
- jsp (3)
- 内部非公开文档(注意:保存为草稿) (0)
- 国内外知名企业 (2)
- 网店 (3)
- 分页 (1)
- 消费者习惯 (2)
- 每日关注 (1)
- 商业信息 (18)
- 关注商业网站 (1)
- 生活常识 (3)
- 新闻 (2)
- xml&JSON (5)
- solaris (1)
- apache.common (3)
- BLOB/CLOB (1)
- lucene (2)
- JMS (14)
- 社会进程 (8)
- SSH扩展 (2)
- 消费心理 (1)
- 珠三角 (1)
- 设计文档 (1)
- XWork&webwork (1)
- 软件工程 (3)
- 数据库及链接 (1)
- RMI (2)
- 国内外知名企业&人物 (1)
最新评论
-
司c马:
简介易懂、
OutputStream和InputStream的区别 -
在世界的中心呼喚愛:
解决我的问题
Java获取客户端的真实IP地址 -
bo_hai:
都是些基本的概念呀!
SSO -
tian_4238:
哥们,你也是搞水利这块的吧。
巧用SQLQuery中的addScalar -
loveEVERYday:
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp小结
http://www.cnblogs.com/yinger/archive/2011/07/25/2116707.html
1.Action 名称的搜索顺序
它是对namespace从后面往前面的递推的搜索,如果当前的这个path组成的namespace不是一个package,那么就减少一个path继续搜索
如果是一个package,并且在那个package中找到了action就会执行,但是如果这个package下没有这个action,那么就会直接在默认的package中搜索
如果找到了就执行,如果还是没有,就提示找不到action
2. Action 配置中的各个默认值
action的class--->ActionSupport
action的method--->execute
result的name--->SUCCESS=”success”
3.Action中的result的各种转发类型
①dispatcher:默认的,内部请求转发
②redirect:浏览器重定向
③redirectAction:重定向到另一个action
④plainText:原样输出网页源代码,不执行Jsp
4.为action属性注入值
在action配置中为响应的action的类的属性赋值,同时可以在返回的结果视图中得到这个值
这个属性一定要提供set方法
5.指定struts2的请求
指定请求的后缀:修改常量struts.action.extension 的值,如果有多个后缀,可以使用逗号隔开
常量的定义:常量可以定义在多个配置文件中,但是由于加载常量的顺序原因,后面的文件的常量值会覆盖前面的常量值
建议在struts.xml中配置
几种常见的常量配置介绍
6. struts2的处理流程
这一部份很重要,解释一下:用户在地址栏里输入了url后,就向服务器发送了一个请求,根据 web.xml 中的配置找到
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
对应的类 StrutsPrepareAndExecuteFilter 来处理,它是框架的核心控制器,它负责拦截
<url-pattern>/*</url-pattern> (web.xml 中配置了)指定的用户请求
如果用户请求的路径合法(以默认的.action为后缀或者没有后缀),那么就会进入到框架中处理,进入之前还会经过一系列的拦截器
才会转到action类处理
如果路径不合法,那么此次请求失败
7.指定多个struts配置文件
<include file=”XXX.xml” /> 分模块的管理
8. 动态指定调用action中的某个方法
有两种方式:第一种,动态方法调用,但是已经不建议使用
如果想关闭动态方法调用,可以在struts.xml中配置
<constant name=”struts.enable.DynamicMethodInvocation” value=”false”>
第二种方式,使用通配符定义action
action name=”helloworld_*” method=”{1}”
如果请求的url尾是helloworld_execute,调用的是execute方法
如果是 helloworld_other,调用的是 other 方法
测试:
文档结构图
代码展示:
XML 部分 [web.xml] <?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"> <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> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> [struts.xml] <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <include file="strutspackage.xml"></include> </struts> [strutspackage.xml] <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="base" extends="struts-default"> <global-results><!-- 全局视图 --> <result name="success">/sucess.jsp</result> </global-results> <action name="base"> <result name="success">/base.jsp</result> </action> </package> <package name="yinger" namespace="/yinger" extends="struts-default"> <action name="helloworld_*" class="com.yinger.HelloWorld" method="{1}"> <param name="actionPara">{1}</param> <result name="message">/message.jsp</result> </action> <action name="helloworld" class="com.yinger.HelloWorld" method="helloworld"> <result name="helloworld">/helloworld.jsp</result> </action> </package> <package name="redirect" extends="struts-default"> <action name="redirect" class="com.yinger.HelloWorld" method="redirect"> <result name="redirect" type="redirect">/helloworld.jsp?${message}</result> </action> </package> <package name="plaintext" extends="struts-default"> <action name="plaintext" class="com.yinger.HelloWorld" method="plaintext"> <result name="plaintext" type="plainText"> <param name="location">/plainText.jsp</param> <param name="charSet">GBK</param> </result> </action> </package> <package name="itcast" namespace="/itcast" extends="base"> <action name="itcast" class="com.itcast.ItCast" method="execute"> <result name="message">/message.jsp</result> </action> <action name="redirectAction_samePackage" class="com.itcast.ItCast" method="redirectAction_samePackage"> <result name="redirectAction_samePackage" type="redirectAction"> <param name="actionName">itcast</param> <param name="namespace">/itcast</param> </result> </action> <action name="redirectAction_otherPackage" class="com.itcast.ItCast" method="redirectAction_otherPackage"> <result name="redirectAction_otherPackage" type="redirectAction"> <param name="actionName">helloworld</param> <param name="namespace">/yinger</param> </result> </action> </package> </struts>
Java部分 HelloWorld.java package com.yinger; public class HelloWorld { private String message; private String actionPara; public String helloworld(){ message = "HelloWorld.helloworld!"; return "helloworld"; } public String hello(){ message = "HelloWorld.hello!"; return "message"; } public String execute(){ message = "HelloWorld.execute!"; return "message"; } public String redirect(){ message = "HelloWorld.redirect!"; return "redirect"; } public String plaintext(){ message = "HelloWorld.plaintext"; return "plaintext"; } public String getActionPara() { return actionPara; } public void setActionPara(String actionPara) { this.actionPara = actionPara; } public void setMessage(String message) { this.message = message; } public String getMessage() { return message; } } ItCast.java package com.itcast; public class ItCast { private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String execute(){ message = "ItCast.execute!"; return "message"; } public String redirectAction_samePackage(){ message = "redirectAction_samePackage"; return "redirectAction_samePackage"; } public String redirectAction_otherPackage(){ message = "redirectAction_otherPackage"; return "redirectAction_otherPackage"; } }
JSP部分 index.jsp <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> index.jsp <br> </body> </html> base.jsp <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'sucess.jsp' starting page</title> </head> <body> base--->success! <br> </body> </html> success.jsp <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'sucess.jsp' starting page</title> </head> <body> sucess <br> </body> </html> helloworld.jsp <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'helloworld.jsp' starting page</title> </head> <body> HelloWorld.jsp! <br> ${message } </body> </html> message.jsp <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'message.jsp' starting page</title> </head> <body> ${message} <br /> ${actionPara }<br/> </body> </html> plainText.jsp <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'plainText.jsp' starting page</title> </head> <body> </body> </html>
测试结果:
1.http://localhost:8080/struts2test/base
2. http://localhost:8080/struts2test/yinger/helloworld_hello
3.http://localhost:8080/struts2test/yinger/helloworld_execute
4.http://localhost:8080/struts2test/yinger/helloworld
5.http://localhost:8080/struts2test/itcast/redirectAction_samePackage—>http://localhost:8080/struts2test/itcast/itcast
6.http://localhost:8080/struts2test/itcast/redirectAction_otherPackage—>http://localhost:8080/struts2test/yinger/helloworld
7.http://localhost:8080/struts2test/redirect/redirect—>http://localhost:8080/struts2test/helloworld.jsp?HelloWorld.redirect!
8.http://localhost:8080/struts2test/plaintext/plaintext
9.http://localhost:8080/struts2test/itcast/itcast
10.http://localhost:8080/struts2test/itcast/1234/5678/itcast
发表评论
-
Struts2对Action名称的搜索顺序
2011-08-03 22:47 1383新建一个struts2项目,命名为struts2。按照如下XM ... -
探究Struts2运行机制:StrutsPrepareAndExecuteFilter 源码剖析
2011-08-03 19:09 1772一、概述 Struts2的核心是一个Filter ... -
struts2 FilterDispatcher 和 StrutsPrepareAndExecuteFilter 的区别
2011-08-03 18:02 1346FilterDispatcher是struts2.0.x到2. ... -
Struts2的模板和主题theme及自定义theme
2011-08-03 16:59 8267Struts2提供了三种主题,ajax, simple, cs ... -
struts2 action基类 ActionSupport
2011-08-03 16:14 2637Struts 2的Action无须实现 ... -
Struts2访问Web元素(RequestAware,SessionAware,ApplicationAware)
2011-08-03 14:50 9703在Struts2中,动作类虽然继承ActionSupport类 ... -
Struts2自定义拦截器实例—Session超时的处理
2011-08-03 10:49 3401版本:struts2.1.6 实例功能:当用户登陆后,ses ... -
Struts2数据传输的背后机制:ValueStack(值栈)
2011-07-11 15:34 1344今天看到一篇讲struts2的valuestack的很好文章, ... -
struts2文件上传的采用的三种方式解析
2011-07-06 18:29 1372文件上传几乎是每个项目实现的一个必须的模块。 上传就是将 ... -
Struts2 <s:token/>标签
2011-03-01 09:24 16131、使用Struts2的表单标签,其中需要增加token标签。 ... -
struts2的Action配置通配符
2011-02-28 17:05 22241.注意,书写代码的时候一定要注意命名的规则,不要胡乱的命名, ... -
struts2中form的theme属性
2011-02-28 16:00 2383struts2中theme属性包括xhtml,html,sim ... -
Struts2的类型转换器
2011-02-24 17:27 1393一、概述 在B/S应用中,将字符串请求参数转换为相应的 ... -
Struts2标签--s:url
2011-02-23 17:09 1884<!--action就是struts2 acti ... -
hgdfghgdfh
2011-01-06 17:57 0datealocaltonight.com -
Struts2 默认的模板配置 theme
2010-10-29 10:26 1474在使用struts2标签时,默认情况下生成的html代码会添加 ... -
Struts2自定义Theme
2010-10-29 10:21 15951. Struts2 Theme与WebWork Theme ... -
Struts2 的四种theme类型
2010-10-29 10:13 1678struts2 中有四种 theme 类型: simple ... -
struts2数据校验流程图
2010-10-29 09:40 2152通过我在blog中写到关于利用Struts 2完成手动校验这篇 ... -
详解struts2中struts.properties
2010-10-18 11:28 1221Struts 2框架有两个核心配置文件: strut ...
相关推荐
第二章可能会详细讨论Struts2的Action和Result。Action类是开发者实现业务逻辑的地方,它可以返回不同的Result类型,如JSP、FreeMarker或Velocity模板。Result则将Action的执行结果导向对应的视图,实现页面跳转。...
#### 二、Struts2框架技术概述 **2.1 Struts1和Struts2的对比** Struts1与Struts2的主要区别在于: - **请求处理机制**:Struts1使用ActionForm作为请求的载体,而Struts2则采用拦截器机制。 - **配置方式**:...
2. **熟悉Java Web基础知识**:了解Servlet、JSP等相关技术对于学习Struts 2是非常重要的。 3. **掌握Struts 2的基本结构**:从Action、拦截器、配置文件等方面入手,逐步深入框架内部。 4. **实践项目开发**:通过...
在2个课时内,你将学习如何使用Struts框架构建一个用户登录系统,从而了解Struts中各部分如何协同工作。 ### 实验目标 1. **理解Struts控制器的作用**:控制器是Struts框架的核心组件,它负责接收HTTP请求,解析...
### Struts2_Action 学习笔记与通配符配置详解 #### 一、Struts2简介及简单配置 Struts2是一个基于Java EE平台的开源Web应用框架,它继承了Struts1的优点,并在此基础上进行了大量的改进。Struts2的核心功能之一是...
### Struts2 in Action:Java Web开发框架详解 #### Struts2:现代Web应用框架 本书《Struts2 in Action》旨在为读者提供一个全面、深入的Struts2框架介绍。Struts2作为一款功能强大的Java Web应用开发框架,不仅...
本教程“Struts2应用开发详解(第二讲)”是系列教程的一部分,共计五部分,我们将深入探讨Struts2的核心概念和技术。 在Struts2框架中,Model代表业务逻辑,View负责展示,而Controller则是这两者之间的协调者,处理...
这里的`{1}`表示Action方法名与请求路径中的第二个参数匹配。例如,如果请求路径为`/modules/car/update`,那么将调用`carAction`类中的`update`方法。 **2. 明确配置方式:** 另一种方式是在配置文件中明确指定每...
- **第2章:向Struts2说你好**(第20页起) - **章节概述**:这一章通过一个简单的示例项目,引导读者快速入门Struts2。通过实际操作,读者可以直观地感受到Struts2框架的强大之处。 - **关键知识点**: - 快速...
Action是Struts2应用程序的核心组件之一,负责处理用户请求并返回响应。了解Action的生命周期和执行流程对于编写高效的应用程序至关重要。 #### 十、Struts2_结果类型 Struts2支持多种结果类型,包括`dispatcher`...
在"Struts 2+Hibernate+Spring整合开发技术详解"中,作者蒲子明深入讲解了如何将这三个框架有效地结合在一起。第18章可能涉及的是项目整合的高级话题或者特定场景的应用,由于文件名只给出了“第18章”,具体章节...
这本由蒲子明编著的《Struts 2+Hibernate+Spring整合开发技术详解》深入探讨了如何将这三个框架有效结合,以构建高效、模块化的Web应用。书中第12到17章的内容涵盖了以下几个关键知识点: 1. **Struts 2框架**: -...
2. **第二章:环境搭建** - 指导如何配置开发环境,包括安装JDK、Apache Tomcat服务器,以及设置IDE。 3. **第三章:第一个Struts2应用** - 通过创建一个简单的“Hello, World!”示例来介绍基本的项目结构和配置。 4...
Struts2是一个强大的Java Web应用程序开发框架,基于Model-View-Controller(MVC)设计模式,旨在简化企业级Web应用...本讲解为第一讲,后续部分会深入探讨更多高级特性和实战案例,帮助你全面掌握Struts2框架的使用。
Struts框架是Apache软件基金会开发的一个开源Web应用框架,专门用于...尽管如此,Struts仍然是理解和学习MVC模式以及Web应用框架设计的重要参考,对于初学者和有经验的开发者来说,都具有重要的历史价值和教育意义。
Struts2是Java Web开发中广泛使用的开源框架,它的出现为开发者提供了强大的MVC(Model-View-Controller)...在day01视频中,通常会涵盖基础的环境搭建和第一个简单的Struts2应用示例,为后续的学习打下坚实的基础。
### Struts2详解 #### 一、Struts2概述与工作原理 Struts2是一个用于构建企业级Java Web应用的强大框架。它继承了Struts1的一些特性,并在此基础上进行了改进和扩展,支持更加灵活和强大的功能。Struts2基于MVC...