Struts2参数和类型转换
来源:互联网 发布:淘宝水果卖点怎么写 编辑:程序博客网 时间:2024/06/04 17:45
一、接收请求参数
1.采用基本类型接收请求参数(get/post)
public class UserAction { private Integer id; public void setId(Integer id) {//struts2通过反射技术调用与请求参数同名的属性的setter方法来获取请求参数值 this.id = id; } public Integer getId() {return id;} }
2.采用自定义类型接收请求参数
User.java
package model;public class User { private String name; private String pass;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPass() {return pass;}public void setPass(String pass) {this.pass = pass;} }
package action;import java.util.List;import java.util.Map;import model.User;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport { private User user;public User getUser() {return user;}public void setUser(User user) {this.user = user;}//Struts2首先通过反射技术调用Product的默认构造器创建product对象,然后再通过反射技术调用product中与请求参数同名的属性的setter方法来获取请求参数值。 public String Login(){if(user.getName().equals("csdn")&&user.getPass().equals("csdn")){return SUCCESS;}return INPUT;}}
在web.xml中配置struts2
<?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Struts Blank</display-name><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.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><package name="hello" namespace="/hello" extends="struts-default"><action name="login" class="action.LoginAction" method="Login"><result name="success">/index.jsp</result><result name="input">/login.jsp</result></action></package></struts>
3.集合Map 和 List的实现
private Map<String,User> users; private List<User> userss;
public Map<String, User> getUsers() {return users;}public void setUsers(Map<String, User> users) {this.users = users;}public List<User> getUserss() {return userss;}public void setUserss(List<User> userss) {this.userss = userss;}public String Login() { if(users.get("one").getName().equals("csdn")&&users.get("one").getPass().equals("csdn")){ return SUCCESS; } if(userss.get(0).getName().equals("csdn")&&userss.get(0).getPass().equals ("11")){ return SUCCESS; }return INPUT;}
login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@taglib uri="/struts-tags" prefix="s" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'login.jsp' starting page</title></head><body><!-- struts2标签 --><s:form action="/hello/login" method="post"> <s:textfield name="users['one'].name" label="用户名"/> <s:password name="users['one'].pass" label="密码 "/> <s:textfield name="userss[0].name" label="用户名"/> <s:password name="userss[0].pass" label="密码"/> <s:submit/></s:form></body></html>
4.List和Map无泛型的实现登陆
private List usersss;private Map userssss;
public List getUsersss() {return usersss;}public void setUsersss(List usersss) {this.usersss = usersss;}public Map getUserssss() {return userssss;}public void setUserssss(Map userssss) {this.userssss = userssss;}public String Login() { User user=(User) usersss.get(0);//强制转化 if(user.getName().equals("csdn")&&user.getPass().equals("11")){ return SUCCESS; } if(((User) userssss.get("one")).getName().equals("13")&&((User) userssss.get("one")).getPass().equals("123")){ return SUCCESS; } return INPUT;}
LoginAction-conversion.properties
#listElement_usersss=model.User#MapKey_userssss=java.lang.StringElement_userssss=model.User
login.jsp
<s:form action="/hello/login" method="post"> <s:textfield name="usersss[0].name" label="用户名"/> <s:password name="usersss[0].pass" label="密码"/> <s:textfield name="userssss['one'].name" label="用户名"/> <s:password name="userssss['one'].pass" label="密码"/> <s:submit/></s:form>
5.自定义类型转换
(1)局部类型转换器
private User userinfo;public User getUserinfo() {return userinfo;}public void setUserinfo(User userinfo) {this.userinfo = userinfo;}public String Login() {System.out.println(userinfo.getName() + "---" + userinfo.getPass());if (userinfo.getName().equals("13") && userinfo.getPass().equals("123")) {return SUCCESS;}return INPUT;}
userinfo=util.DateConverter
DateConverter.java
package util;import java.util.Map;import model.User;import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;public class DateConverter extends DefaultTypeConverter {@Overridepublic Object convertValue(Map<String, Object> context, Object value,Class toType) {if (toType == User.class) {// 系统的请求参数是一个字符串数组String[] params = (String[]) value;// 创建一个User实例User user = new User();// 只处理请求参数数组第一个数组元素,// 并将该字符串以英文逗号分割成两个字符串String[] userValues = params[0].split(",");// 为User实例赋值user.setName(userValues[0]);user.setPass(userValues[1]);// 返回转换来的User实例return user;} else if (toType == String.class) {// 将需要转换的值强制类型转换为User实例User user = (User) value;return "<" + user.getName() + "," + user.getPass() + ">";}return null;//return super.convertValue(context, value, toType);}}
<!-- struts2标签 --><s:form action="/hello/login" method="post"> <s:textfield name="userinfo" label="用户信息"></s:textfield> <s:submit/></s:form>
(2)全局类型转换器
在WEB-INF/classes下放置xwork-conversion.properties文件 。在properties文件中的内容为:
待转换的类型=类型转换器的全类名
对于本例而言, xwork-conversion.properties文件中的内容为:
model.User=util.OSConverter
OSConverter.java
package util;import java.lang.reflect.Member;import java.util.Map;import model.User;import org.apache.struts2.util.StrutsTypeConverter;import com.opensymphony.xwork2.conversion.TypeConverter;public class OSConverter extends StrutsTypeConverter {@Overridepublic Object convertFromString(Map arg0, String[] value, Class arg2) {// TODO Auto-generated method stub// 系统的请求参数是一个字符串数组String[] params = (String[]) value;// 创建一个User实例User user = new User();// 只处理请求参数数组第一个数组元素,// 并将该字符串以英文逗号分割成两个字符串String[] userValues = params[0].split(",");// 为User实例赋值user.setName(userValues[0]);user.setPass(userValues[1]);// 返回转换来的User实例return user;} @Overridepublic String convertToString(Map arg0, Object value) {User user = (User) value;return "<" + user.getName() + "," + user.getPass() + ">";}}
注意:局部对Action的指定进行转换,只装换一次。全局类型对每个元素进行转换。
0 0
- Struts2参数和类型转换
- Struts2入门二-参数和类型转换
- struts2类型转换和验证
- struts2(二) 表单参数自动封装和参数类型自动转换
- Struts2类型转换和自定义类型
- struts2.2.1.1 类型转换问题 (传递Date类型参数)
- struts2.X心得7--接收请求参数和struts类型转换介绍以及案例分析
- struts2.X心得7--接收请求参数和struts类型转换介绍以及案例分析
- Struts2 局部类型转换和全局类型转换实践
- struts2的OGNL和类型转换
- Struts2基本配置和类型转换
- Struts2 类型转换和数据校验
- 【Struts2】1.类型转换和输入校验
- struts2中自动封装参数及类型转换
- 【Struts2】Struts2学习(5)类型转换和输入校验
- 【Struts2】:Struts2的类型转换
- struts2类型转换
- struts2类型转换续
- Java中properties文件的使用
- Android开源项目发现--- 工具类依赖注入DI篇(持续更新)
- android 短信数据库 结构
- 清理和关闭多余的Win7服务
- 【hibernate4.3】annotation 建立第一个程序
- Struts2参数和类型转换
- 服装行业物料管理系统之课题来源参考文献;
- Android开源项目发现--- 工具类图片缓存篇(持续更新)
- Qt模块化笔记之Qt_Quick——用QQuickImageProvider给Image组件添加图片
- 关于计算编程中的数据类型长度和大小范围
- Android开源项目发现--- 工具类网络相关篇(持续更新)
- html button return up web(html实现按键返回上一级web)
- 程序员最需要补充维他命D
- USACO 3.3 Home on the Range (range)