c语言sscanf函数的用法是什么
242
2022-12-01
【Java EE (Struts2 + Spring + Hibernate)开发】:Struts2(二)之【类型转换】
【Java EE (Struts2 + Spring + Hibernate)开发】: Struts2(二)之【类型转换】
1 详解 Struts 2 的类型转换
1-1 Struts 2 内建的类型转换器
1-2 基于 OGNL 的类型转换
public class LoginAction implements Action //User类型属性封装请求参数 private User user; private String tip; //user属性的setter和getter方法 public void setUser(User user) { this.user = user; } public User getUser() { return this.user; } //tip属性的setter和getter方法 public void setTip(String tip) { this.tip = tip; } public String getTip() { return this.tip; } public String execute() throws Exception { //通过user属性的name属性和pass属性来判断控制逻辑 if (getUser().getName().equals("crazyit.org") && getUser().getPass().equals("leegang") ) { setTip("登录成功"); return SUCCESS; } else { setTip("登录失败!!"); return
直接封装成Map
public class LoginAction implements Action //Action类里包含一个Map类型的参数 //Map的value类型为User类型 private Map
直接封装成List
1-3 指定集合元素的类型
Struts 2 允许开发者通过局部类型文件来指定集合元素的类型。类型转换文件就是一个普通的 Properties (*.properties) 文件,里面包含了类型转换的相关配置信息。
public class LoginAction implements Action //Action类里包含一个List类型的参数 //List集合元素为User类型 private List users; private String tip; //users属性的setter和getter方法 public void setUsers(List users) { this.users = users; } public List getUsers() { return this.users; } //tip属性的setter和getter方法 public void setTip(String tip) { this.tip = tip; } public String getTip() { return this.tip; } public String execute() throws Exception { //在控制台输出Struts 2封装产生的List对象 System.out.println(getUsers()); //因为没有使用泛型,所以要进行强制类型转换 User firstUser = (User)getUsers().get(0); //users属性的第一个User实例来决定控制逻辑 if (firstUser.getName().equals("crazyit.org") && firstUser.getPass().equals("leegang") ) { setTip("登录成功!"); return SUCCESS; } else { setTip("登录失败!!"); return
局部类型转换文件 LoginAction-conversion.properties
Element_users=org.crazyit.app.domain.User
局部类型转换文件文件名应该为 ActionName-conversion.properties。
List 类型
Element_
Map 类型
Key_
1-4 自定义类型转换器
public class LoginAction implements Action private User user; private String tip; //user属性的setter和getter方法 public void setUser(User user) { this.user = user; } public User getUser() { return this.user; } //tip属性的setter和getter方法 public void setTip(String tip) { this.tip = tip; } public String getTip() { return this.tip; } public String execute() throws Exception { if (getUser().getName().equals("crazyit.org") && getUser().getPass().equals("leegang") ) { setTip("登录成功!"); return SUCCESS; } else { setTip("登录失败!!"); return
public class UserConverter extends DefaultTypeConverter //类型转换器必须重写convertValue方法,该方法需要完成双向转换 public Object convertValue(Map context , Object value, Class toType) { //当需要将字符串向User类型转换时 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
1-5 注册类型转换器
1-6 基于 Struts 2 的自定义类型转换器
public class UserConverter extends StrutsTypeConverter //实现将字符串类型转换成复合类型的方法 public Object convertFromString(Map context , String[] values , Class toClass) { //创建一个User实例 User user = new User(); //只处理请求参数数组第一个数组元素, //并将该字符串以英文逗号分割成两个字符串 String[] userValues = values[0].split(","); //为User实例赋值 user.setName(userValues[0]); user.setPass(userValues[1]); //返回转换来的User实例 return user; } //实现将复合类型转换成字符串类型的方法 public String convertToString(Map context, Object o) { //将需要转换的值强制类型转换为User实例 User user = (User) o; return "<" + user.getName() + "," + user.getPass() + ">"; }}
1-7 处理 Set 集合
public class LoginAction extends ActionSupport private Set users; private Date birth; //user属性的setter和getter方法 public void setUsers(Set users) { this.users = users; } public Set getUsers() { return this.users; } //birth属性的setter和getter方法 public void setBirth(Date birth) { this.birth = birth; } public Date getBirth() { return this.birth; } //没有提供execute()方法, //将直接使用ActionSupport的execute()方法
public class UserConverter extends StrutsTypeConverter public Object convertFromString(Map context , String[] values, Class toClass) { Set result = new HashSet(); for (int i = 0; i < values.length ; i++ ) { //创建一个User实例 User user = new User(); //只处理请求参数数组第一个数组元素, //并将该字符串以英文逗号分割成两个字符串 String[] userValues = values[i].split(","); //为User实例的属性赋值 user.setName(userValues[0]); user.setPass(userValues[1]); //将User实例添加到Set集合中 result.add(user); } return result; } public String convertToString(Map context, Object o) { //如果待转换对象的类型是Set if (o.getClass() == Set.class) { Set users = (Set)o; String result = "["; for (Object obj : users ) { User user = (User)obj; result += "<" + user.getName() + "," + user.getPass() + ">"; } return result + "]"; } else { return ""; } }}
public class User{ private String name; private String pass; //name属性的setter和getter方法 public void setName(String name) { this.name = name; } public String getName() { return this.name; } //pass属性的setter和getter方法 public void setPass(String pass) { this.pass = pass; } public String getPass() { return this.pass; } public boolean equals(Object obj) { //待比较的两个对象是同一个对象,直接返回true if(this == obj) { return true; } //只有当obj是User对象 if (obj != null && obj.getClass() == User.class) { User user = (User)obj; //两个对象的name属性相等即认为二者相等。 if (this.getName().equals(user.getName())) { return true; } } return false; } //根据name属性来计算hashCode。 public int hashCode() { return
1-8 类型转换中的错误处理
public class LoginAction extends ActionSupport private User user; private String tip; //user属性的setter和getter方法 public void setUser(User user) { this.user = user; } public User getUser() { return this.user; } //tip属性的setter和getter方法 public void setTip(String tip) { this.tip = tip; } public String getTip() { return this.tip; } public String execute() throws Exception { if (getUser().getName().equals("crazyit.org") && getUser().getPass().equals("leegang") ) { setTip("登录成功!"); return SUCCESS; } else { setTip("登录失败!!"); return
public class LoginAction extends ActionSupport private User user; //user属性的setter和getter方法 public void setUser(User user) { this.user = user; } public User getUser() { return user; } //没有execute方法,直接使用ActionSupport的execute方法
public class LoginAction extends ActionSupport private List
2 使用 Struts 2 的输入校验
2-1 编写校验规则文件
2-2 国际化提示信息
2-3 使用客户端校验
2-4 字段校验器配置风格
2-5 非字段校验器配置风格
2-6 短路校验器
2-7 校验文件的搜索规则
2-8 校验顺序和短路
2-9 内建校验器
2-10 基于 Annotation 的输入校验
2-11 手动完成输入校验
3 使用 Struts 2 控制文件上传
3-1 Struts 2 的文件上传
3-2 实现文件上传的 Action
3-3 配置文件上传的 Action
3-4 手动实现文件过滤
3-5 拦截器实现文件过滤
3-6 输出错误提示
3-7 文件上传的常量配置
4 使用 Struts 2 控制文件下载
4-1 实现文件下载的 Action
4-2 配置 Action
4-3 下载前的授权控制
5 详解 Struts 2 的拦截器机制
5-1 拦截器在 Struts 2 中的作用
5-2 Struts 2 内建的拦截器
5-3 配置拦截器
5-4 使用拦截器
5-5 配置默认拦截器
5-6 实现拦截器类
5-7 使用拦截器
5-8 拦截方法的拦截器
5-9 拦截器的执行顺序
5-10 拦截结果的监听器
5-11 覆盖拦截器栈里特定拦截器的参数
5-12 使用拦截器完成权限控制
6 使用 Struts 2 的 Ajax 支持
6-1 使用 stream 类型的 Result 实现 Ajax
6-2 JSON 的基础知识
6-3 实现 Action 逻辑
6-4 JSON 插件与 json 类型的 Result
6-5 实现 JSP 页面
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~