- 浏览: 1217734 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (706)
- 全部博客(10000) (0)
- java基础 (123)
- 算法及数据结构 (64)
- SSH框架整合与平台系统分析 (11)
- j2ee (46)
- Oracle (95)
- SQL Server (11)
- javaScript (73)
- Ajax (22)
- jQuery (39)
- ExtJs (4)
- jsp (13)
- Servlet (6)
- struts1 (2)
- struts2 (33)
- Ibatis (2)
- hibernate (24)
- Spring (11)
- 设计模式 (8)
- 正则表达式 (9)
- UML (0)
- XML (9)
- linux (19)
- CSS (11)
- FreeMarker (4)
- nginx 与 memcached (6)
- SEO (5)
- Web 服务器 (11)
- junit 与 selenium2 (4)
- MyEclipse 有关的问题 (24)
- 生活杂感 (37)
- 看过的书 (2)
- 技术牛人 (2)
- 需要优化的例子 (3)
- English 学习 (7)
- bug修改的解决方法 (2)
- 数据库实战经验总结 (1)
- 期待解决的问题 (20)
- 等待自己学习的东西 (15)
- 自己公司代码结构总结 (15)
- 企业经营之道 (23)
- 工具管理 (1)
- 世范水晶 (2)
最新评论
-
hustkeai:
第一个方法是不对的
求一个Map中最大的value值,同时列出键,值 -
qq591920734:
java List 排序 Collections.sort() 对 List 排序(首先年龄排序,如果年龄相同,则按名字排序) -
qq591920734:
[color=orange][/color]包女包女不女
java List 排序 Collections.sort() 对 List 排序(首先年龄排序,如果年龄相同,则按名字排序) -
timer_yin:
seagrave 写道这个算法想法不错,但太耗时,我用1、2、 ...
用1、2、2、3、4、5这六个数字,数字排序经典算法 -
hellostory:
日常生活中,我们都不按你上面的那个方法算的!!!
JAVA小函数-计算日期差
Struts2 namespace总结---感觉总结的很详细。
http://www.fengfly.com/plus/view-171234-1.html
创建struts2的应用,首先应如前面所示要搭建好环境。jar包的导入和web.xml配置这里不在写出来。现在就来看第一个应用的struts.xml这个配置文件:
<struts>
<package name="hello" namespace="/test" extends="struts-default">
<action name="sayHello" class="com.yxb.struts.HelloWorld" method="execute">
<result name="success">/WEB-INF/page/index.jsp</result>
</action>
</package>
</struts>
如上所示,struts2中是采用<package>元素来管理Action的,包的作用和java中的类包是非常类似的,它主要用于管理一组业务功能相关的action。在实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。配置包时必须指定name属性,该name属性值可以任意取名,但必须唯一,它不对应java的类包,如果其它包要继承该包,必须通过该属性进行引用。包的namespace属性用于定义该包的命名空间,命名空间作为访问该包下Action的路径的一部分,如访问上面例子的Action,访问路径为:/test/sayHello.action。 namespace属性可以不配置,如果不指定该属性,默认的命名空间为空字符串。配置namespace有什么好处呢?就名称空间而言可以有效防止名字重复,即请求路径一样,这样就会导致错误。第二个就是当有名称空间时,可以减少配置的书写量,因为相同路径的action请求可以放置在同一个名称空间下,这样就不用每次都写出名称空间值所代表的路径。
除了上述两个属性,通常每个包都应该继承struts-default包,因为Struts2很多核心的功能都是拦截器来实现。如:从请求中把请求参数封装到action、文件上传和数据验证等等都是通过拦截器实现的。 struts-default定义了这些拦截器和Result类型。因此,当包继承了struts-default才能使用struts2提供的核心功能。
struts-default包是在struts2-core-2.x.x.jar文件中的struts-default.xml中定义。 struts-default.xml也是Struts2默认配置文件。 Struts2每次都会自动加载 struts-default.xml文件。细心点其实可以发现struts-default.xml的name为struts-default包有一个属性abstract="true",这表示该包为抽象包,抽象包中不能包含action,抽象包是专门用来被其它包来继承的。
接下来就是<action>元素的配置,其中name属性为访问时路径的一部分,class为类的全限定名,最后就是一个method属性,表示应该被调用的方法。里面的<result>元素和struts1的forward元素一样,相当于视图的配置。接下来就是Action和 JSP的代码片断:
public class HelloWorld {
private String message;
public String getMessage() {
return message;
}
public String execute(){
message ="Hello World! 北京时间:";
return "success";
}
}
JSP页面的<body>里面的内容:
${message}<%=new java.util.Date() %>
写完以后,部署成功后,在浏览器中输入相应的URL(如.../test/sayHello.action)就会显示出消息和时间。其中execute方法要求必须是返回一个字符串,因为struts2根据这个返回的字符串来决定调用哪个视图。从编码过程来看,Action类是完全的POJO类,没有依赖任何类或者接口。
在struts2中,Action的名称的搜索时遵循一定原则的,下面就是struts2在请求到来后,怎么去找到合适的action进行调用,总结如下 (获得请求路径的URI,例如url是:
http://server/struts2/path1/path2/path3/test.action
):
1.首先寻找namespace为/path1/path2/path3的package,如果不存在这个package则执行步骤2;如果存在这个 package,则在这个package中寻找名字为test的action,当在该package下寻找不到action 时就会直接跑到默认namaspace的package里面去寻找action(默认的命名空间为空字符串""),如果在默认namaspace的 package里面还寻找不到该action,页面提示找不到action。
2.寻找namespace为/path1/path2的package,如果不存在这个package,则转至步骤3;如果存在这个package,则在这个package中寻找名字为test的action,当在该package中寻找不到action 时就会直接跑到默认namaspace的package里面去找名字为test的action ,在默认namaspace的package里面还寻找不到该action,页面提示找不到action。
3.寻找namespace为/path1的package,如果不存在这个package则执行步骤4;如果存在这个package,则在这个 package中寻找名字为test的action,当在该package中寻找不到action 时就会直接跑到默认namaspace的package里面去找名字为test的action ,在默认namaspace的package里面还寻找不到该action,页面提示找不到action。
4.寻找namespace为/
的package,如果存在这个package,则在这个package中寻找名字为test的action,当在 package中寻找不到action或者不存在这个package时,都会去默认namaspace的package里面寻找action,如果还是找不到,页面提示找不到action。
总的来说,就是相当于是最大匹配原则,如果一直没有匹配的,则一级一级往上找,直至根目录。如果在某处出现了匹配路径,则去那个名称空间下找 action,这个时候如果找不到,就直接跳到默认package中去找了。如果仍然找不到,那就只能报错了。所以说,这个寻找过程是先匹配大的名称空间,有匹配了才去找相应的action,如果在匹配的名称空间没有需要的action,则直接跳到默认包中找,不会再次跳回去匹配名称空间了
原文网址: http://www.fengfly.com/plus/view-171234-1.html
form表单页面
<body>
<center>
<form action="cc/td.action
" method="post">
<input type="text" name="name"><br>
<input type="text" name="age"><br>
<input type="submit" value="提交">
</form>
</center>
</body>
struts.xml页面
<struts>
<package name="org.tstruts2" namespace="/cc"
extends="struts-default">
<action name="td" method="lu" class="org.tstruts2.com.Test">
<result name="success">./success.jsp
</result>
<result name="false">./false.jsp
</result>
</action>
</package>
</struts>
解释说明:namespace="/cc" 这个值是对应webRoot下面的folder的包的名字,有多少层就建多少层包。要是不想建包也可以在webRoot根目录下面直接写form页面。但是那样要在action="cc/td.action " 添加包的路径名字注意写法。前面不加/ (这句话对吗?); 目前自己的总结!上面别人的总结还没有去证明!
解释说明2:加上namespace属性后, 返回的视图路径
<result name="success">./success.jsp </result>
都要写在当前包中。上面的是在webRoot下建的包,要是在WEB-INF 下面建包。如下:
<action name="td" method="lu" class="org.tstruts2.com.Test">
<result name="success">/WEB-INF/dd/ee/success.jsp</result>
<result name="false">/WEB-INF/dd/ee/false.jsp</result>
</action>
就比较自由一点。
发表评论
-
JQuery Uploadify 基于JSP的无刷新上传实例:
2013-12-26 11:53 9111、JQuery Uploadify 基于JSP的无刷新上 ... -
struts2几种result type探究
2013-07-01 17:24 910struts2几种result type探究 ... -
Struts2配置文件-struts.xml 和struts.properties
2013-06-07 10:29 8207struts.properties 是可以不要 ... -
<s:property>的用法
2013-05-30 15:03 8661,访问Action值栈中的普通属性: <s:pro ... -
struts2+spring整合
2013-05-28 11:38 1022来源: struts2+spring整合 ... -
Struts2教程7:上传任意多个文件
2013-05-14 19:44 978来源: Struts2教程7:上传任意多个文件 ... -
java url重写
2013-05-13 14:36 783来源: java url重写 这 ... -
urlrewrite实现伪静态化 Struts2
2013-05-13 12:10 4162来源: urlrewrite实现伪静态化 ... -
struts2与urlrewrite的整合 (优)
2013-05-13 11:25 3189来源: struts2与urlrewrite的整合 ... -
struts2 url 重写 用urlrewrite
2013-05-13 09:52 758来源: struts2 url 重写 刚做完一个项目 ... -
struts2伪静态
2013-05-09 18:22 763struts2伪静态 -
Struts2防止表单重复提交
2013-05-09 11:03 876来源: Struts2防止表单重复提交 ... -
struts2 <s:property/>标签的使用
2013-05-08 11:08 1544struts2 <s:property/>标 ... -
Struts2+jQuery+JSON实现异步交互
2013-04-28 16:40 868http://qsfwy.iteye.com/blog/6 ... -
STRUTS2.XML详解
2012-11-29 11:30 867STRUTS2.XML详解 ... -
struts2 使用simple标签模板
2012-11-28 15:13 1210struts.ui.theme属性的问题 str ... -
stuts2 表单字段和action中对应取值有三种方式
2012-11-27 11:57 1020stuts2 表单字段和action中对应取值有三种方式 ... -
Struts2一个Action内包含多个请求处理方法的处理,method的使用方法,struts2中的路径问题,通配符映射
2012-09-10 20:41 1107Struts2一个Action内包含多个请求处理方法的处理, ... -
struts标签的总结1
2011-08-20 22:14 11271、取属性值及属性值得条件过滤 <body> ... -
对Struts 2.0中的struts.xml配置文件详细说明 4
2011-08-12 17:05 906<struts> ...
相关推荐
Struts2是一个强大的Java web应用程序开发框架,它遵循Model-View-Controller (MVC)设计模式,用于构建可维护性和可扩展性高的企业级应用。本文将深入探讨Struts2的核心概念,包括Action、Result、配置文件、OGNL与...
5. **命名空间(Namespace)**:命名空间是Struts2中组织Action的重要机制,它决定了Action的访问URL。默认为空字符串,可自定义如`/`、`/module1`等,帮助划分不同功能模块的Action。 6. **Action**:Struts2的一...
### Struts2初步使用总结 #### 一、Struts2原理概述 **1.1 为什么要用Struts2** 在探讨为何使用Struts2之前,我们先简要回顾一下Struts2的一些基本特点: - **模块化设计**:Struts2采用模块化的架构设计,使得...
### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...
### Struts2 学习总结 #### 一、Struts2 概览 Struts2 是 Apache 软件基金会负责维护的一个开源项目,它是一个用于简化 Web 应用程序开发的 MVC(Model-View-Controller)框架。相比于 Struts1,Struts2 在架构上...
### Struts2技术总结 #### 一、Struts2概述及特点 Struts2作为一款流行的Java Web开发框架,继承了Struts1的优点并进行了大量的改进与创新,使其成为了一个非常值得学习的目标。Struts2相比Struts1,最大的优势...
### Struts2基础总结 #### 一、Struts2简介及环境搭建 ##### 1-1、导包 - 在构建Struts2项目时,正确的导入JAR包至关重要。如果盲目导入所有可用的JAR包可能会导致冲突或者不必要的错误。官方推荐的做法是从`...
根据提供的文件信息,我们可以将Struts2的相关知识点总结如下: ### Struts2框架概述 - **Struts2** 是一个基于MVC模式的开源Web应用框架,它与JSP、XML、JDK以及Tomcat等技术紧密关联。Struts2在Java Web开发中...
以上是对 Struts2 学习的一些基本总结,包括环境搭建、工具集成、工作原理以及 Namespace 和 Action 的使用等关键知识点。通过这些知识点的学习,可以帮助开发者更好地理解和使用 Struts2 框架。
<package name="test" extends="struts-default" namespace="/tests"> /error.jsp </struts> ``` 通过这样的配置,当应用程序中发生未捕获的异常时,Struts2会自动跳转到/error.jsp页面,...
本文总结了Struts2的常用方法和经验,涵盖了配置问题、EL表达式、Struts2的架构和Namespace等方面的知识点。 一、配置问题 Struts2的最新版本为GA 2.2.1,需要以下几个类库: 1.commons-fileupload-1.2.1.jar 2....
总结来说,Struts2注解开发通过`struts2-convention-plugin`插件实现了更加简洁、灵活的Java web应用开发方式,降低了XML配置的工作量,提高了开发效率。理解并熟练运用Struts2的注解开发,有助于创建高效、易于维护...
当请求无法匹配到特定Action时,Struts2会从上一级namespace直到根namespace逐级查找,找不到则抛出错误。对于包含资源的页面,如图片,如果在命名空间内,需要确保图片路径的正确设置,以免影响显示。 Struts2还...
<package name="default" namespace="/" extends="struts-default"> <result-type name="json" class="com.opensymphony.xwork2.result.HttpServletResponseResult" default="true"/> <!-- ... --> ...
<package name="default" namespace="/" extends="struts-default"> <result name="success">/HelloWorld.jsp ``` 这里定义了一个名为"hello"的Action,当用户访问/hello时,Struts2会实例化并执行`...
总结来说,通过这种方式,我们可以利用AJAX向Struts2 Action传递JSON数组,实现异步数据交互。这在动态更新页面内容、处理表单提交等场景下非常有用。同时,使用JSON作为数据交换格式,使得前后端的数据交换变得更加...
总结,本实例通过Struts2展示了如何实现一个基本的登录功能。Struts2的灵活性和可扩展性使其成为开发Java Web应用的有力工具。通过理解并实践这个实例,你可以更深入地掌握Struts2的工作原理和应用。