77范文网 - 专业文章范例文档资料分享平台

Struts2开发手册- 马士兵 - 图文(3)

来源:网络收集 时间:2019-04-05 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

Struts学习笔记 第11页 共39页

} public int getAge() { } public void setAge(int age) { } }

//Action类 public class UserAction extends ActionSupport { private User user; //private UserDTO userDTO; public String add() { } public User getUser() { } public void setUser(User user) { } } 3、 ModelDriven接收参数

return age; this.age = age; System.out.println(\ + user.getName()); System.out.println(\ + user.getAge()); return SUCCESS; return user; this.user = user; 使Action实现com.opensymphony.xwork2.ModelDriven(在实现接口时需要使用泛型,否则使用时需要转型)中利用其getModel()方法返回对象模型,从而获得传入的参数。 例如URL如下: http://localhost:8080/Struts2_0900_ModelDrivenParamInput/user/user!add?name=a&age=8 其:访问的是namespace=”/user” action的name=”user” Action所执行的方法method=”add”,其传入了两个参数:name=a,age=8。

参数被传入至Action后,会被ModelDriven对象根据参数名自动赋值给User对象相应的属性而生成User对象,并且由getModel()返回。那么我们在Action中就可以利用这个对象了。

注意:传入的参数名需要与对象模型中的成员属性一致。 对象模型User:

public class User { private String name; private int age; public String getName() { } public void setName(String name) { } public int getAge() { this.name = name; return name; Struts学习笔记 第12页 共39页

}

} return age; public void setAge(int age) { } this.age = age; Action对象

import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class UserAction extends ActionSupport implements ModelDriven{ private User user = new User(); public String add() { } @Override public User getModel() { return user; } } 十、 Action属性接收参数中文问题

如果表单提交数据中有中文时,尽量使用post方式。 需要在Struts.xml配置文件中加入一个常量配置,如下:

System.out.println(\ + user.getName()); System.out.println(\ + user.getAge()); return SUCCESS; /user_add_success.jsp 但是,在Struts2 2.7之前,这个配置无效,需要其它方法设置。如下: 手动在web.xml中在Struts过滤器之前配置一个过滤器用于解决中文的问题。(老马自己说错了,其实是可以的) 十一、 简单数据验证

使用addFieldError方法和s:fieldError标签简单处理数据校验 场景:对一个用户名进行验证,如果用户名不合法,则显示给客户端查看信息。 URL请求地址: http://localhost:8080/Struts2_1100_SimpleDataValiation/user/user!add?name=a 分析:访问的Struts2配置,namespace=”/user” action的name=”user” Action所执行的方法method=”add”并且传入了一个参数name=a.如下: /user_add_success.jsp /user_add_error.jsp Struts学习笔记 第13页 共39页

根据配置文件可以得知action所对应的类为com.bjsxt.struts2.user.action.UserAction,并且具有两个结果集(success和error).代码如下: import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport { } 根据Action类代码,可以看到Action是利用Action的成员属性(name)来接受参数值,并且使用this.addFieldError()方法添加错误信息,以便前台可以访问到。 private String name; public String add() { } public String getName() { } public void setName(String name) { } this.name = name; return name; if(name == null || !name.equals(\)) { } return SUCCESS; //addFieldError 添加错误信息,可以在客户端访问到。 this.addFieldError(\, \); this.addFieldError(\, \); return ERROR; this.addFieldError(name, errorMessage); 注:此方法是使用继承了ActionSupport父类的 name:可以是傻的属性名称,但一般建议使用哪个成员属性出题了,就用那个。当前是因为name没有通过验证,所以使用name errorMessage:添加的信息 在客户端获取这些信息,如下: User Add Error!
注:使用标题,需要使用<%@taglib>命令引用Struts2的标签库如下: <%@taglib uri=\ prefix=\ %> FiledName:指定信息的名称。 Theme: 指定显示的主题。 1、标签:获取使用addFieldError()方法添加的信息。 注:使用此标签获取的错误信息,Struts强制添加了css的修饰。生成的HTML代码如下(不长用):

    name is error name is too long Class=”errorMessage”是Struts2已经设置好的一个css了。这个方式不方便我们自定义样式。

    Struts学习笔记 第14页 共39页

    2、:这是标签的写方式,会在页面上产生一个链接,点击后显示如下(Struts2生成的一些信息): 3、标签:获取值堆栈属性所对应的值。 注:value:指定值堆栈的属性名及数据下标等。 例如:value=”a” 获取Action类的成员属性a的值 Value=”errors” 获取errors属性的对象Map值 Value=”errors.name”获取errors属性的对象Map的key为name的value Value=”errors.name[0] 获取errors属性的对象Map的key为name的value的第一个元素的值。 注:如果获取Action Context中的Key值,需要在前面加#(井号) 例如: 十二、 访问Web元素

    取得Map类型request,session,application,真实类型 HttpServletRequest, HttpSession, ServletContext的引用:

    1. 前三者:依赖于容器 2. 前三者:IOC (只用这种) 3. 后三者:依赖于容器 4. 后三者:IOC

    一、 方法一:ActionContext方式

    Struts学习笔记 第15页 共39页

    一般在Action类的构造方法、或execute()方法中获取。

    public class LoginAction1 extends ActionSupport { } 然后在Jsp页面中获取相关web元素。 User Login Success!
    | <%=request.getAttribute(\) %>
    | <%=session.getAttribute(\) %>
    | <%=application.getAttribute(\) %>




    private Map request; private Map session; private Map application; public LoginAction1() { } public String execute() { } request.put(\, \); session.put(\, \); application.put(\, \); return SUCCESS; request = (Map)ActionContext.getContext().get(\); session = ActionContext.getContext().getSession(); application = ActionContext.getContext().getApplication(); 注:因为request、session、application对象Struts2将在放入到Action Context中, 因此需要使用#key来访问对象们。 后面的是java脚本代码的访问方式。 二、 方式二:Ioc(控制反转)—推荐使用

    让Action类实现RequestAware、SessionAware、ApplicationAware接口,然后重写他们的set方法(setRequest、setSession、setApplication),通过依赖注入、控制反转(原来自己控制,现在由别人来控制值。) import org.apache.struts2.interceptor.ApplicationAware; import org.apache.struts2.interceptor.RequestAware;

    百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Struts2开发手册- 马士兵 - 图文(3)在线全文阅读。

Struts2开发手册- 马士兵 - 图文(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/572920.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: