struts2-12-用户自定义转换器(地址)

一:登录主页面--->login

根据登录注册的不同按钮进入不同的action及method

 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <%@ taglib prefix="s" uri="/struts-tags"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 8 <title>登录页面</title>
 9 <script>
10    function login(){
11        targetForm=document.forms[0];
12        targetForm.action="Login!LoginMethod";
13        targetForm.submit();
14    }
15     function register(){
16            targetForm=document.forms[0];
17            targetForm.action="Register!RegisterMethod";
18            targetForm.submit();
19     }
20 </script>
21 </head>
22
23 <body>
24  <s:fielderror escape="false"></s:fielderror>
25  <font color="red">${requestScope.error}</font>
26  <form action="actionName!methodName" method="post" >
27   用户名:<input type="text" name="username"><br>
28   密&nbsp;&nbsp;&nbsp;&nbsp;码:<input type="text" name="password"><br>
29   详细地址:<input type="text" name="address">省&nbsp;&nbsp;
30         <input type="text" name="address">市&nbsp;&nbsp;
31         <input type="text" name="address">区<br>
32         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
33         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
34         <input type="text" name="address"/><br>
35  用户类型:
36         <select name="usertype">
37             <option value="管理员" >管理员</option>
38             <option value="普通用户">普通用户</option>
39         </select>
40         <br/>
41  <input type="button" value="登录"  onclick="login()">&nbsp;&nbsp;&nbsp;
42  <input type="button" value="注册"  onclick="register()">
43  </form>
44 </body>
45 </html>

二:注册页面--->register.jsp

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ taglib prefix="s" uri="/struts-tags"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>注册页面</title>
 9 </head>
10 <body>
11     <form action="Register" method="post">
12         用户名:<input type="text" name="username" /><br>
13         密码:<input type="password" name="password" /><br>
14         详细地址:<input type="text" name="address">省&nbsp;&nbsp;
15                <input type="text" name="address">市&nbsp;&nbsp;
16                <input type="text" name="address">区<br>
17                <input type="text" name="address"/>
18         <input type="submit" value="注册">
19     </form>
20 </body>
21 </html>

三:用户登录成功页面 --->adminWelcome.jsp

 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 欢迎${sessionScope.loginType}${sessionScope.loginUser}<a href="login.jsp">登录!</a><br>
11
12 </body>
13 </html>

四:用户个人的相关信息   nuc.sw.vo.User.java

 1 package nuc.sw.vo;
 2
 3 public class User {
 4     private String username;
 5     private String password;
 6     private String usertype;
 7     private Address address;
 8     public Address getAddress() {
 9         return address;
10     }
11     public void setAddress(Address address) {
12         this.address = address;
13     }
14     public String getUsername() {
15         return username;
16     }
17     public void setUsername(String username) {
18         this.username = username;
19     }
20     public String getPassword() {
21         return password;
22     }
23     public void setPassword(String password) {
24         this.password = password;
25     }
26     public String getUsertype() {
27         return usertype;
28     }
29     public void setUsertype(String usertype) {
30         this.usertype = usertype;
31     }
32
33 }

五:地址是四级联为了简化应使用一个变量来获取四个值  nuc.sw.vo--->Address.java

 1 package nuc.sw.vo;
 2
 3 public class Address {
 4
 5     private String province;
 6     private String city;
 7     private String county;
 8     private String street;
 9
10     public String getProvince() {
11         return province;
12     }
13
14     public void setProvince(String province) {
15         this.province = province;
16     }
17
18     public String getCity() {
19         return city;
20     }
21
22     public void setCity(String city) {
23         this.city = city;
24     }
25
26     public String getCounty() {
27         return county;
28     }
29
30     public void setCounty(String county) {
31         this.county = county;
32     }
33
34     public String getStreet() {
35         return street;
36     }
37
38     public void setStreet(String street) {
39         this.street = street;
40     }
41
42 }

六:现将地址转换,需加一个 文件:xwork-conversion.properties

1 nuc.sw.vo.Address=nuc.sw.utils.MyTypeConverter

七:在工具类中设置地址的值 --->nuc.sw.utils  MyTypeConverter

 1 package nuc.sw.utils;
 2
 3 import java.util.Map;
 4
 5 import org.apache.struts2.util.StrutsTypeConverter;
 6
 7 import nuc.sw.vo.Address;
 8
 9 public class MyTypeConverter extends StrutsTypeConverter {
10
11     @Override
12     public Object convertFromString(Map context, String[] values, Class toClass) {
13
14         Address address = new Address();
15         address.setProvince(values[0]);
16         address.setCity(values[1]);
17         address.setCounty(values[2]);
18         address.setStreet(values[3]);
19         return address;
20     }
21
22     @Override
23     public String convertToString(Map context, Object o) {
24
25         return null;
26     }
27
28 }

八:nuc.sw.action--->LoginRegAction.java

在相关的Action中执行相应方法并且配置相应的存储区域以便获取

 1 package nuc.sw.action;
 2
 3 import com.opensymphony.xwork2.ActionContext;
 4 import com.opensymphony.xwork2.ActionSupport;
 5 import com.opensymphony.xwork2.ModelDriven;
 6
 7 import nuc.sw.vo.User;
 8
 9 public class LoginRegAction extends ActionSupport implements ModelDriven<User>{
10     private User user=new User();
11     public User getModel() {
12         return user;
13     };
14         public String LoginMethod() throws Exception {
15             //登录逻辑
16             if(user.getUsername().equals("张丹")&&user.getPassword().equals("123")){
17                 ActionContext.getContext().getSession().put("loginUser",user.getUsername());
18                 ActionContext.getContext().getSession().put("loginType",user.getUsertype());
19                 return SUCCESS;
20             }
21             else{
22                 ActionContext.getContext().put("error", "用户名或者密码错误");
23                 return ERROR;
24             }
25         }
26         public String RegisterMethod() throws Exception {
27                 ActionContext.getContext().getSession().put("registerUser", user.getUsername());
28                 ActionContext.getContext().getSession().put("registerProvince",user.getAddress().getProvince());
29                 ActionContext.getContext().getSession().put("registerCity",user.getAddress().getCity());
30                 ActionContext.getContext().getSession().put("registerCounty",user.getAddress().getCounty());
31                 ActionContext.getContext().getSession().put("registerStreet",user.getAddress().getStreet());
32                 return SUCCESS;
33         }
34
35 }

九:配置struts.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5
 6 <struts>
 7  <constant name="struts.devMode" value="false" />
 8  <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
 9  <package name="default" namespace="/" extends="struts-default">
10     <action name="Login"  method="LoginMethod" class="nuc.sw.action.LoginRegAction">
11          <result name="success">/adminWelcome.jsp</result>
12          <result name="error">/login.jsp</result>
13          <result name="input">/login.jsp</result>
14      </action>
15     <action name="Register"  method="RegisterMethod" class="nuc.sw.action.LoginRegAction">
16          <result name="success">/regLogin.jsp</result>
17          <result name="error">/register.jsp</result>
18          <result name="input">/register.jsp</result>
19      </action>
20  </package>
21 </struts>

十:注册成功后,显示注册地址信息--->regLogin.jsp

可通过EL表达式/OGNL表达式获取相关值

 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <%@ taglib prefix="s" uri="/struts-tags"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 8 <title>注册成功后登录</title>
 9 </head>
10 <body>
11 欢迎${sessionScope.registerUser}注册,<a href="login.jsp">请登录!</a><br>
12 您的详细地址为:<br>
13     ${sessionScope.registerProvince}
14     ${sessionScope.registerCity}
15     <s:property value="#session.registerCounty"/>
16     <s:property value="#session.registerStreet"/>
17 </body>
18 </html>

十一:项目结构:

十二:运行结果:

时间: 2024-10-09 22:06:31

struts2-12-用户自定义转换器(地址)的相关文章

struts2自定义类型转换器

首先,何为struts2的类型转换器? 类型转换器的作用是将请求中的字符串或字符串数组参数与action中的对象进行相互转换. 一.大部分时候,使用struts2提供的类型转换器以及OGNL类型转换机制即可满足大部分类型转换需求.如: 类User.java package models; public class User { private String username; private String password; public String getUsername() { retur

Struts2 自定义类型转换器

Struts2自定义类型转换器分为局部类型转换器和全局类型转换器 (1)局部类型转换器 如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性 用date类型是可以接收到的,但是如果传的是20101112这样类型的字符串,用date类型是获取不到,并且会出现错误的,struts2提供了一 种类型转换器供我们使用. 以下为局部类型转换器的开发步骤a.首先要写一个类来继承DefaultTypeConverterb.然后覆盖convertValue

Toad for Oracle 12.1下载地址

32 位版: http://us-downloads.quest.com/Repository/support.quest.com/Toad for Oracle/12.1/Software/Toad for Oracle 12.1.msi http://us-downloads.quest.com/Repository/support.quest.com/Toad for Oracle/12.1/Software/Toad DBA Suite for Oracle 12.1 Commercia

struts2学习笔记之十一:struts2的类型转换器

Struts2的类型转换器 如何实现Struts2的类型转换器? * 继承StrutsTypeConverter * 覆盖convertFromString和convertToString 注册类型转换器 * 局部类型转换器,局部类型转换器只对当前Action起作用,需要提供如下配置文件: MyActionName-conversion.properties,MyActionName指需要使用转换器的Action名称 "-conversion.properties"固定字符串,不能修改

从源代码剖析Struts2中用户自定义配置转换器的两种方式——基于字段的配置转换器和基于类型的配置转换器(解决了实际系统中,因没有区分这两种工作方式的生命周期而引起的异常错误问题)

自定义类型转换器必须实现ongl.TypeConverter接口或对这个接口的某种具体实现做扩展 <<interface>>com.opensymphony.xwork2.conversion.TypeConverter à com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter à org.apache.struts2.util.StrutsTypeConverter 接口及类进行解析 TypeConverter(

Struts2之类型转换器

一.类型转换器的应用场景 类型转换是OGNL的一部分,默认的八种基本类型.String.Date会使用类型转换,但是更复杂的类型转换就需要我们自定义了(虽然这个东西一般根本用不到),OGNL可以应用在很多领域,但是在web领域,因为在客户端到服务器端传输的只是字符串,所以这里就有一个需求收缩,我们的需求就变为完成String和复杂对象之间的互相转换.在Struts2中的类型转换则是在客户端的请求参数往Action的成员属性中设置的时候会被调用. 二.如何使用? 1.理论部分 所有的类型转换器都要

盗墓笔记第一季全(12集)下载地址

更多:http://www.webyang.net/Html/web/article_149.html <盗墓笔记>是2014年欢瑞世纪影视传媒股份有限公司出品的一部网络季播剧,改编自南派三叔所著的同名小说,由郑保瑞和罗永昌联合导演,李易峰.唐嫣. 杨洋.刘天佐.张智尧.魏巍等主演. 该剧主要讲述了五个主要角色进入古墓探险的故事,采用季播剧形式,单季投资6000万,第一季拍摄12集. 出身"老九门"世家的吴邪,因身为考古学家的父母在某次保护国家文物行动时被国外盗墓团伙杀害,

Struts2之类型转换器的使用

一.学习案例:通过在输入页面(input.jsp)用同一个输入框同时输入用户名和密码,通过类型转换器在输出页面(output.jsp)分别输出用户名和密码. 二. a)类型转换是发生在页面数据提交之后,Action接收之前的. b)对于8个原生数据类型以及Date,String.Struts2都能自动转换.所以我们只有在某些特定需求的情况下才会用到. c)类型转换器,一听这个名字,我们首先会想到得有这么个类(没想到的等明天再想吧,继续看).所以我们先创建一个名为UserConverter的类.当

JAVAWEB开发之Struts2详解(二)——Action接受请求参数、类型转换器、使用Struts2的输入校验、以及遵守约定规则实现Struts2的零配置

Action接受请求参数 作为MVC框架,必须要负责解析HTTP请求参数,并将其封装到Model对象中 Struts2提供了非常强大的类型转换机制用于请求数据 到 model对象的封装 Struts2和MVC定义关系 StrutsPrepareAndExecuteFilter:控制器 在Struts2中action是什么?(Struts2是一个MVC框架) V:jsp M:action C:action StrutsPrepareAndExecuteFilter Struts2提供了三种数据封装

struts2自定义转换器

Struts2自定义类型转换器分为局部类型转换器和全局类型转换器 (1)局部类型转换器 如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用date类型是可以接收到的,但是如果传的是20101112这样类型的字符串,用date类型是获取不到,并且会出现错误的,struts2提供了一种类型转换器供我们使用. 以下为局部类型转换器的开发步骤 a.首先要写一个类来继承StrutsTypeConverter b.然后覆盖convertFromSt