- 浏览: 174836 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
yinvent:
谢谢,终于找到一个可以用的例子!
struts2学习之一简单范例 -
锅巴49:
学习了,不错.
使用 Spring 2.5 注释驱动的 IoC 功能 -
fooky:
你好,今天在配置spring secutiry3,想让系统先从 ...
spring security 配置文件小结(逐步深化到url级别) -
lj508:
你好啊 请教你个问题
我用那个纯jsp上传时
怎么运行时根本没 ...
Sturt2学习之十二---文件上传 -
641216927:
我还是一个struts2新手。
有个问题请教一下:
同时在t ...
struts2学习之一简单范例
一、struts2探索
学习完一定需要实际去运行,这样才能有更加深刻的理解!
1、几个主要的默认配置文
1)struts-default.xml配置文件
路径:struts2的strut2-core.jsr文件中
2)default.properties
路径:strut2-core.jar的org.apache.struts2包中
2、如何覆盖几个主要的默认文件的内容
1)方法一:在自己写 的Struts.xml,通过<constant>标签来描述。
2)通过在root目录下,新建struts.properties文件,重写需要覆盖的属性!
### Struts default properties
###(can be overridden by a struts.properties file in the root of the classpath)
3、关于加载
可以在strut2-core.jar的org.apache.struts2包中default.properties文件中看到
默认加载的配置文件为struts-defult.xml,struts-plugin.xml和struts.xml文件
4、若在struts.xml中的包中如果加上了namespace
<package name="struts2" extends="struts-default" namespace="/hello">
那么在jsp中提交到这个包下的action的话,我们就需要在jsp页面中修改
原来的如action=“register”
修改为action=“/hello/register.action”
5、在strut.xml中包含其他文件
万一项目比较大,可以把strut.xml模块化的方式配置
可以生成的struts1.xml、struts2.xml
然后用<include>标签把它们包含的进来!
6、MVC理解的struct
C:核心控制器ServletDispathe
业务控制器action:业务调用,只把接口调用没和逻辑写在里面。没有具体的实现!
7、模型驱动
1)目前action如register.action,文件,它就是让它与jsp页面的属性或叫字段一一对应
叫属性驱动。
2)模型驱动:有点类似struts1.0 的actionForm
本struts2.o的模型驱动的实现过程:
A、首先建立一个pojo类
package com.test.bean; import java.util.Date; public class User { private String username; private String password; private String repassword; private int age; private Date birthday; private Date graduation; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getRepassword() { return repassword; } public void setRepassword(String repassword) { this.repassword = repassword; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public Date getGraduation() { return graduation; } public void setGraduation(Date graduation) { this.graduation = graduation; } }
B、RegisterAction修改为RegisterAction2
package com.test.action; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; import com.opensymphony.xwork2.Preparable; //Preparable内含prepare(),可以写一些执行action之前的方法 import com.test.bean.User; public class RegisterAction2 extends ActionSupport implements ModelDriven<User>,Preparable { private User user = new User(); public User getModel() { return user; } public void prepare() throws Exception { System.out.println("hello world"); } @Override public String execute() throws Exception { return SUCCESS; } }
C、修改Strut2.xml文件
<action name="register" class="com.test.action.RegisterAction2">
8、推荐属性驱动
原因一:就像struts1那样,即使有formAction,它只是和前台web页面对应的,我们在书写持久层如hibernate时,还是需要在来一个
pojo或叫javabean,所以说到底还是属性驱动比较方便!
9、修改错误提示信息位置
struts2默认的错误显示是显示在表格头部的 ,若想在显示时直接显示在相应字段旁边,在相应的位置加如下代码!
<td>
<s:fielderror cssStyle="color:red">
<s:param>username</s:param>
</s:fielderror>
</td>
10、表单重复提交
1)在rejister.jsp
的form表单中加一个标签
<S:token></s:token>
2)在struts.xml中的name为registrer的action加上
<interceptor-ref name="token"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
3)完成以上两部后重复提交,会报以下错误:invalid.taken,即重复提交时,需要配置错误处理
在struts.xml中的name为registrer的action加上重复提交报错提示页面!
<result name="invalid.token">/register2.jsp</result>
4)这个错误信息,struts2是放在action里面的
需要在register.jsp
加上以下错误显示的代码
<s:actinerror cssStyle="color:blue">
5)经过以上四步骤后,重复提交就会在相应的register2页面报不能重复提交的错误信息
但是该错误信息是struts2默认的,在struts-message.xml就第一行可以看到。
如果想要显示中文,可以国际化一下
在我们项目的root目录下已建立的文件message_zh_CN.properties文件中加一行
struts.messages.invalid.token = \u8bf7\u4e0d\u8981\u91cd\u590d\u63d0\u4ea4\u8868\u5355
二、Action中servelt如何测试
1、一般的junit测试方法无法提供servelt,可以通过以下两种工具:
1)第一种方式:apache项目中jakarta项目中Cactus(jakarta项目是一个很好的项目,里面有很多小项目,像性能测试JMeter)
2)第二种方式:Mock
2、struts2一般已经可以脱离servelt了,可以直接用junit测试
不过有些地方还是需要耦合,struts2提供下面的类:
有三种方法获得的servlet相关的东西
1)方法一:使用ActionContext类
使用方法:
A、在action类中
ActionContext.getContext().put("zhangsan","helloworld")
//该方法相当于httpServeltReques的setAttribute()方法。
//而且该方法有以下好处:一是将session保存成一个map了,这样我们也可以直接用junit测试
但是该方法没有办法获得httpServletResponse相应的这个对象,这样的话常见方法二
B、在jsp页面中我们增加
张三:${requestScope.zhangsan}
2)方法二:实现ActionContextAware接口(该接口ServletRequestAware及ServletResponseAware相似)
该接口中了有方法setSevletRequest()
使用方法:
A、在longinAction.java中增加以下代码:
private HttpSevletRequest request;
Public void setServletRequest(HttpSevletRequest request){
this.request=requst;
}
这个方法会有是struts2框架自己调用的 ,内部运用 了IOC
这样的话可以直接在action类中使用request对象了。
B、同样在longinAction.java中增加response对象,以下代码:
private HttpSevletResponse response;
Public void setServletResponse(HttpSevletResponse response){
this.response=response;
}
这个方法会有是struts2框架自己调用的 ,内部运用 了IOC
这样的话可以直接在action类中使用response对象了。
同时可以设置Cookie
Cookie cookie=new Cookie("userName",this.getUseerName());
cookie.setMaxAge(1000);
response.addCookie(cookie);
return SUCCESS;
在jsp页面中显示cookie
cookie: ${cookie.userName.value}
3)方法三:ServletActionContext类
HttpServletResponse response=ServletActionContext.getResponse();
总结:方法一和方法三用的较多,首选方法一,其次用方法三。方法二不介意使用。
三、struts2探索续
1、动态方法调用
方法一:在jsp页面中
action="login!hello.action"
即提交表单时,不再去执行对应action中excute()方法,而是去执行hello()方法。
该方法等价于在jsp页面中不使用"!"后面部分,在strut.xml方法中
<action name="login" class="com.test.action.LoginAction "method="hello">
2、关于重定向等
1)了解在struts-default.xml文件中,结果试图默认默认true的是name="dispatcher"
<package name="struts-default" abstract="true"> <result-types> <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/> <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/> <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/> <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/> <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/> <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/> <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/> <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/> <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/> <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" /> </result-types>
2)其中的redirect和redirectAction都表方从定向(他们两个的区别是一个重定向到视图,另一个重定向到action)
重定向到话了request的内容将不会被保存,他将表示另一个请求。
发表评论
-
webwork Action中获取request, response,session对象的方法
2009-04-16 17:25 1662webwork Action中获取request ... -
不依赖XML代码粘合创建Struts 2应用程序
2009-04-07 15:32 1442不依赖XML代码粘合创建Struts 2应用程序 原文地址:h ... -
struts.properties粗解
2009-04-07 14:28 1423原文章地址:http://fratemity1314.spac ... -
Struts2学习之十五-声明式的异常处理
2009-04-06 22:32 888看下文前可以先参考: http://blog.chinaun ... -
Sturt2+spring整合
2009-04-01 17:55 1141一、相应的spring的jarStruts2-spring-p ... -
Sturt2学习之十三---文件下载
2009-04-01 17:01 1031Sturt2学习之十三---文件下载1、download.js ... -
Sturt2学习之十二---文件上传
2009-04-01 15:59 2290一、纯jsp文件上传1、新建文件夹upload内含upload ... -
struts学习之十一-----国际化
2009-04-01 10:59 1071一、java对国际化的支持 ... -
struts2学习之九---拦截器
2009-04-01 10:34 1471拦截器实现机制一、回忆“java反射与动态代理二.txt”,因 ... -
struts2学习之八校验框架--非字段校验
2009-04-01 01:16 1268一、非字段校验 用属性来校验字段和字段检验刚好是参照物相反 ... -
struts2学习之七校验框架--字段校验
2009-04-01 00:23 1548struts2学习之七校验框架--字段校验(使用xml文件)一 ... -
struts2学习之六输入校验
2009-03-31 21:53 1565一、输入校验与类型转化的关系 遇到类型转换错误的时候(也就是说 ... -
struts2学习之五(最基本的)输入校验
2009-03-31 21:51 931一、register.jsp注册页面 //以下第一两句 的作用 ... -
struts2学习之四、类型转换2
2009-03-31 17:50 853<h3><font color=" ... -
struts2学习之三、类型转换
2009-03-31 17:08 910struts2学习之三、类型转 ... -
struts2学习之二------基本验证
2009-03-31 15:39 1004struts2学习之二----基本 ... -
struts2学习之一简单范例
2009-03-31 14:45 2213简单范例1、下载struts2.0.11-all.rar 2、 ...
相关推荐
### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...
在源码分析中,以下几个关键知识点是非常重要的: 1. **拦截器(Interceptors)**:Struts2的核心特性之一,拦截器负责在Action调用前后执行额外的逻辑,如日志记录、权限验证等。在`org.apache.struts2....
13. ** strut2四天笔记**:这份学习笔记可能涵盖了以上所有知识点,包括如何创建Action,配置struts.xml,使用OGNL表达式,处理异常,以及实践中的各种技巧和最佳实践。 在四天的学习过程中,你应该通过实践和理解...
### Struts2知识点详解 #### 一、Struts2框架概览 Struts2是Apache组织推出的一个基于Java EE的Web应用框架,它遵循MVC(Model-View-Controller)设计模式,为开发者提供了构建可扩展、易于维护的Web应用程序的...
下面将对相关知识点进行深入探讨。 1. **Struts2框架基础**: Struts2是Apache软件基金会下的一个项目,它继承了Struts1的优点,并吸取了其他Web框架的精华,如Spring MVC。Struts2的核心是Action类,它是处理请求...
通过深入研究这些源码,开发者可以更好地理解Struts2框架的工作原理,学习如何在实际项目中实现Struts2与Struts1的集成,以及如何利用Struts2的验证机制确保数据的有效性。这将有助于提升Java web开发的专业技能和...
Struts 2.3.15 是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,由Apache软件基金会维护。...如果你正在使用或学习Struts 2,了解上述知识点将有助于你更好地理解和利用这个框架。
### Java Struts2入门学习实例——使用Struts2快速实现多个文件上传 #### 知识点一:配置Struts2中的错误提示信息 在开发基于Java的Web应用程序时,经常需要处理用户上传文件的需求。而Struts2框架因其灵活性与...
Struts2是一个强大的MVC框架,它为Java开发者提供了便捷的Web应用开发工具。本文将对Struts2的核心概念和标签库进行详细讲解,帮助初学者更好地理解和掌握...学习和理解Struts2的标签库是深入掌握这个框架的关键步骤。
### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...
以下是根据标题、描述和标签生成的相关知识点: 1. **MVC架构**:MVC模式是软件设计中的一种经典架构,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。在Struts2中,模型处理...
下面我们将详细探讨不同版本的Struts2 DTD及其相关知识点。 1. **Struts2 DTD 的作用** - Struts2 DTD 是XML文档类型定义,它规定了struts2配置文件(如struts.xml或struts-default.xml)的语法和元素。这些元素...
下面我们将详细探讨这些章节可能涵盖的关键知识点。 第一章:入门与环境搭建 这一章通常会介绍Struts2的基本概念,包括其设计哲学和在Web开发中的角色。它可能涵盖了如何下载并配置Struts2框架,以及创建第一个简单...
以下是这个示例可能涵盖的一些关键知识点: 1. **Action配置**:了解如何在Struts2中创建Action类,定义Action的执行方法,并在struts.xml配置文件中进行映射。 2. **结果类型(Result Type)**:学习如何配置...
为了让众多Struts学习、工作者快速掌握Struts 2的开发,笔者精心编著了本书。 本书按Struts 2的架构体系,细致地介绍了Struts 2各个知识点。在介绍过程中, 笔者依照读者的学习规律,首先介绍基本概念和基本操作,...
在Struts 2.1.8.1中,我们可以发现以下几个重要的知识点: 1. **MVC架构**:Struts 2遵循Model-View-Controller设计模式,它将业务逻辑、数据模型和用户界面分离,使得代码更易于维护和扩展。Controller由Action类...
学习 Struts 2.3.4 包含的这些知识点,有助于开发者更好地理解和构建基于 MVC 架构的 Java Web 应用程序。通过阅读提供的"上课日志",你可以深入学习每个概念的实际应用和示例,从而提升你的开发技能。
在Struts2的2.3.28版本中,我们可能会关注以下几个关键知识点: 1. **Struts2架构**:Struts2的核心组件包括Action、Interceptor(拦截器)、Result、ValueStack和Freemarker模板引擎等。Action是处理用户请求的...