`

Struts2.0学习笔记之二

阅读更多
Struts2.0学习笔记第二天2009.3.11
主要内容:Struts国际化及服务器端验证

上节课回顾:
从jsp页面form到action中,在action中定义set属性和方法,当jsp提交到action中,自动调用set方法寻找set方法中的参数,获得jsp页面用户输入的数据,并开始调用execute方法,返回一个string参数,寻找执行struts.xml中的action,执行service。并返回相应的参数。


内容之一、struts2.0标签:
Struts 2 Action默认拦截所有后缀为.action的请求。因此,如果我们需要将某个表单提交给Struts 2 Action处理,则应该将该表单的action属性设置为*.action的格式。
使用标签实现组件功能
<s: form>提交表单(其中get以字符串提交,post以request对象提交)
<s: textfield>文本框
<s:password>密码
<s:submit>提交按钮

内容之二、Struts2.0国际化:

首先在src目录下创建struts.properties(功能是:加载资源文件)

第一步:首先创建文件: struts.properties
代码如下:
struts.custom.i18n.resources=资源类别名称
如:struts.custom.i18n.resources=messageResource   
(★★★注意:i18n,千万不要写成“il8n”,是数字1而不是字母L,一字一差,标签无效
★★★)。

第二步:创建编码标签文件messageResource.properties
第一种:创建中文的编码标签文件:messageResource_zh_CN.properties
其中(zh是语言代码,CN是国家代码)中文转码,右击文件属性,修改编码格式为“gbk”
messageResource.properties类文件,包含语言代码和国家代码,存放描述信息,其中一个键值对应一个功能键(即:键值对)
如:
regist.username=用户名
regist.password=密码
regist.submit=点击注册
打开“cmd”,切换到C盘根目录,其他盘也可,语法格式:字符编码转换:native2ascii 原文件 新文件名称 ;如输入:native2ascii messageResource.properties messageResource2.properties,回车即可。
上例native2ascii编译后为:

regist.username=\u7528\u6237\u540d
regist.password=\u5bc6\u7801
regist.submit=\u70b9\u51fb\u6ce8\u518c

第二种:创建英文的编码标签文件:messageResource_en_US.properties
修改当前语言(指当前系统语言):在控制面板-“区域和语言选项”-在“标准和格式”,选择“英语(美国)”确定,在浏览器上即可看到效果,可选择多种语言。
如:
regist.username=UserName
regist.password=PassWord
regist.submit=SubMit


内容之三、表单验证

Action类继承extends ActionSupport类
(ActionSupport类所在的包:import com.opensymphony.xwork2.ActionSupport;)
如:
public class RegistAction extends ActionSupport{}
并将返回值修改为,return this.SUCCESS;return this.ERROR
代码如下:
                           if(flag>0)
return this.SUCCESS;
else
return this.ERROR;

在文件内点击任意一个位置,右击,选择“覆盖/实现方法”—选择“validate”,确定,如下自动生成:
public void validate() {
// TODO 自动生成方法存根
super.validate();
}
表单验证代码如下:
public void validate() {
if(this.getUsername()==null||this.getUsername().trim().equals(""))
this.addFieldError("username", this.getText("username.requried"));
if(this.getPassword()==null||this.getPassword().trim().equals(""))
this.addFieldError("password", this.getText("password.requried"));

super.validate();
}

修改相应的struts.xml文件:
<result name="success">/Main.jsp</result>
  <result name="error">/Regist.jsp</result>
  <result name="input">/Regist.jsp</result>
其中input,返回输入的结果验证。
注意:Action 中获取资源文件: this.getText();


内容之四、session值,获取从表单提交的数据信息
action类中代码如下:
ActionContext ac=ActionContext.getContext();
Map map=ac.getSession();
map.put("username", username);
map.put("password", password);

ActionContext ac=ActionContext.getContext();访问session
ac.getSession().put(,);从action中访问session
当用户注册后,其用户注册后的值存放在set方法中,此时已经存放于值栈中
值栈存放着action中所有的值。
Map map=ac.getSession();把用户名,密码等放在session中;
map.put("", );就是放在session中的值
map.put()存放session值
session返回map对象;
参数属性值
值栈ValueStack vs=(ValueStack)request.getAttribute("struts.valueStack")
(★★注意:request.getAttribute("struts.valueStack") ;其中”struts.valueStack“严格划分大小写★★)
session是 map类型

jsp页面获取session值
<%
    ValueStack vs=(ValueStack)request.getAttribute("struts.valueStack") ;
    if(vs!=null){
    String username=vs.findString("username");
    String password=vs.findString("password");
    out.println(username);
    }
   
    %>
另一中方法:使用“$”符号,获取session中变量值。如上:${username }

附加资料,辅助理解:
——————————————————————————————————————————————————
ActionContext介绍

对请求(Request)的参数(Param),使用拦截器框架自动调用一些get()和set()方法设置到对应的Action的字段中,在Action里直接获取请求(Request)或会话(Session)的一些信息,甚至需要直接对JavaServlet Http的请求(HttpServletRequest)、响应(HttpServletResponse)操作。

ActionContext是Action执行时的上下文,上下文可以看作是一个容器(其实我们这里的容器就是一个Map而已),存放Action在执行时需要用到的对象。上下文(webwork)中放有请求的参数(Parameter)、会话(Session)、Servlet上下文(ServletContext)、本地化(Locale)信息等,webwork将Servlet相关数据转换为与Servlet无关的Map对象(即ActionContext),使xwork的Action实现与web层、逻辑层与表现层分离。

每次执行Action之前都会创建新的ActionContext,ActionContext是线程安全的,也就是说在同一个线程里ActionContext里的属性是唯一的,这样Action就可以在多线程中使用。

通过ActionContext取得HttpSession:
Map session = ActionContext.getContext().getSession();
这里的session就是Map类型的对象;原因:WebWork框架将与Web相关的很多对象重新进行了包装,这里将HttpSession对象重新包装成了一个Map对象,提供给Action使用,而不用直接和底层的HttpSession打交道。也正是框架的包装,让我们的Actoion可以完全的和Web层解藕。

如果Action需要直接与JavaServlet的HttpSession、HttpServletRequest等一些对象进行操作,如何处理?
ServletActionContext
ServletActionContext(com.opensymphony.webwork. ServletActionContext),这个类直接继承了ActionContext,它提供了直接与JavaServlet相关对象访问的功能,它可以取得的对象有:
1、javax.servlet.http.HttpServletRequest:HTTPservlet请求对象

2、javax.servlet.http.HttpServletResponse;:HTTPservlet相应对象

3、javax.servlet.ServletContext:Servlet 上下文信息

4、javax.servlet.ServletConfig:Servlet配置对象

5、javax.servlet.jsp.PageContext:Http页面上下文
例:
1、取得HttpServletRequest对象:

HttpServletRequest request = ServletActionContext. getRequest();

2、取得HttpSession对象:

HttpSession session = ServletActionContext. getRequest().getSession();

ServletActionContext和ActionContext有着一些重复的功能,原则上如果ActionContext能够实现的功能,那最好就不使用ServletActionContext,让Action尽量不要直接去访问JavaServlet的相关对象。
使用ActionContext时要注意:不要在Action的构造函数里使用ActionContext.getContext(),因为这个时候ActionContext里的一些值也许没有设置,这时通过ActionContext取得的值也许是null。
分享到:
评论

相关推荐

    struts2.0学习笔记1

    struts2.0学习笔记1 自己动手做的还算可以的 ]struts2.0学习笔记1 自己动手做的还算可以的struts2.0学习笔记1 自己动手做的还算可以的struts2.0学习笔记1 自己动手做的还算可以的

    struts2.0学习笔记,代码整理

    本学习笔记主要涵盖了Struts2.0的基础概念、核心组件、配置方法以及实际代码示例,旨在帮助开发者更好地理解和运用这个框架。 一、Struts2.0基础 Struts2.0是Apache软件基金会的开源项目,它是Struts1.x的升级版本...

    struts2.0学习笔记

    本篇学习笔记将深入探讨Struts2.0的核心概念和配置,帮助你理解和掌握这个框架。 **一、Struts2的作用** Struts2的主要目标是提供一种结构化的开发方式,它整合了请求处理、视图展示和业务逻辑的交互。通过使用...

    Struts2.0学习笔记.doc

    Struts2.0是一个流行的Java Web开发框架,它极大地简化了MVC(模型-视图-控制器)架构的实现。在Struts2中,类型转换是自动进行的,旨在帮助开发者处理请求参数与Action类属性之间的类型匹配问题。文档中的内容主要...

    Struts2.0培训笔记

    本培训笔记将深入探讨Struts2.0的核心概念、特性以及如何在实际项目中有效应用。 一、Struts2.0框架基础 Struts2.0是Apache软件基金会的项目,它是Struts1.x的升级版,提供了更强大的功能和更好的性能。该框架通过...

    struts2.0笔记(1)

    Struts2.0是Java Web开发中非常重要的一个框架,它是Apache软件基金会的开源项目,主要用于构建MVC...通过学习Struts2.0,开发者可以构建出结构清晰、易于维护的Web应用,同时也能提升对Java Web开发的整体理解。

    struts2.0实例源码

    struts2.0实例源码(struts2是我写的struts2Deom是我下的资源项目一起给大家) 包括strust2.0的所有知识面,每个点我都写了详细注释 网上是很难找到这样的资料的,这是我个人学习笔记拿出来希望跟大家一起学习...

    struts2.0相关学习资料

    通过阅读Struts2.0中文手册和学习笔记,以及动手实践教程中的示例,可以全面掌握Struts2.0的用法和精髓。在实际项目中,熟练运用Struts2.0能提高开发效率,降低维护成本。同时,了解并熟悉相关的社区资源和最佳实践...

    struts2.0(希望可以帮助大家)

    这个压缩包包含的资源是作者学习Struts2.0过程中的笔记和示例,分为两个文档:struts2.0文档1-2.doc和struts2.0文档3-4-5.doc,涵盖了从基础到进阶的内容。 在"struts2.0文档1-2.doc"中,可能包括了以下知识点: 1...

    strust2.0学习笔记

    ### Struts2.0 学习笔记 #### 引言 Struts2 是一款非常流行的 Java Web 开发框架,它基于 Struts1 进行了重大的改进与优化,不仅继承了 Struts1 的优秀特性,还在此基础上进行了扩展,支持更加丰富的功能,如拦截...

    struts2学习笔记.doc

    ### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...

    struts2学习笔记(1)

    ### Struts2学习笔记知识点详解 #### 一、Struts2框架的基本引入步骤 ##### 1. 导入Struts2相关Jar包 在引入Struts2框架时,首先需要将Struts2的相关Jar包导入到项目的类路径中。这些Jar包通常包括核心库以及其他...

    Spring2.0学习笔记

    【Spring2.0学习笔记】 在深入探讨Spring2.0的知识点之前,首先理解几个核心概念至关重要。Spring框架的核心设计理念是控制反转(Inversion of Control, IoC)和依赖注入(Dependency Injection, DI)。IoC意味着...

    STRUTS2学习系列

    &lt;display-name&gt;Struts2.0HelloWorld &lt;filter-name&gt;struts2 &lt;filter-class&gt;org.apache.struts2.dispatcher.FilterDispatcher &lt;filter-name&gt;struts2 &lt;url-pattern&gt;/* &lt;!-- 其他配置 --&gt; ``` 这段代码...

Global site tag (gtag.js) - Google Analytics