struts中的类型转换(2)

第一步:(这一步和其他一样,这里从简)

依旧是新建一个web project,命名为struts2,导入struts2必须的包。在src目录下新建struts.xml,修改web.xml文件。

第二步:

将index.jsp改名为input.jsp(这个不是必须的,事实上也没有必要,此处只是为了便于称呼)。Input.jap的代码如下

Java代码  

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6. <%@ taglib prefix="s"  uri="/struts-tags" %>
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11. <title>My JSP ‘index.jsp‘ starting page</title>
  12. <meta http-equiv="pragma" content="no-cache">
  13. <meta http-equiv="cache-control" content="no-cache">
  14. <meta http-equiv="expires" content="0">
  15. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  16. <meta http-equiv="description" content="This is my page">
  17. <!--
  18. <link rel="stylesheet" type="text/css" href="styles.css">
  19. -->
  20. </head>
  21. <body>
  22. <h1><font color=‘red‘> 请输入坐标,用英文半角逗号隔开</font></h1>
  23. <s:form action="pointconverter">
  24. <s:textfield name="point1" label="point1"></s:textfield>
  25. <s:textfield name="point2" label="point2"></s:textfield>
  26. <s:textfield name="point3" label="point3"></s:textfield>
  27. <s:submit name="submit"> </s:submit>
  28. </s:form>
  29. </body>
  30. </html>

该文件有两个要注意的地方

1.使用了struts2的标签库 <%@ taglib prefix="s"  uri="/struts-tags" %>

2.f注意form中的action属性

第三步:

在src下新建包com.beam,其中定义point类 point.java 代码如下:

Java代码  

  1. package com.bean;
  2. public class Point {
  3. public int getX() {
  4. return x;
  5. }
  6. public void setX(int x) {
  7. this.x = x;
  8. }
  9. public int getY() {
  10. return y;
  11. }
  12. public void setY(int y) {
  13. this.y = y;
  14. }
  15. private int x;
  16. private int y;
  17. }

Action

在src下新建包com.action

其中新建类PointAction.java 代码如下

Java代码  

  1. package com.action;
  2. import com.opensymphony.xwork2.ActionSupport;
  3. import com.bean.Point;
  4. public class PointAction extends ActionSupport
  5. {
  6. public Point getPoint1() {
  7. return point1;
  8. }
  9. public void setPoint1(Point point1) {
  10. this.point1 = point1;
  11. }
  12. public Point getPoint2() {
  13. return point2;
  14. }
  15. public void setPoint2(Point point2) {
  16. this.point2 = point2;
  17. }
  18. public Point getPoint3() {
  19. return point3;
  20. }
  21. public void setPoint3(Point point3) {
  22. this.point3 = point3;
  23. }
  24. public String execute() throws Exception
  25. {
  26. return SUCCESS;
  27. }
  28. private Point point1;
  29. private Point point2;
  30. private Point point3;
  31. }

第五步:配置struts.xml文件 代码如下:

Xml代码  

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  4. "struts.apache.org/dtds/struts-2.0.dtd">
  5. <struts>
  6. <package name="struts2"  extends="struts-default">
  7. <action name="pointconverter" class="com.action.PointAction">
  8. <result name="success">/output.jsp</result>
  9. <result name="input">/input.jsp</result>
  10. </action>
  11. </package>
  12. </struts>

第六步:

在WebRoot下新建视图output.jsp 依旧运用struts2的标签库 代码如下

Jsp代码  

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6. <%@ taglib prefix="s" uri="/struts-tags" %>
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11. <title>My JSP ‘output.jsp‘ starting page</title>
  12. <meta http-equiv="pragma" content="no-cache">
  13. <meta http-equiv="cache-control" content="no-cache">
  14. <meta http-equiv="expires" content="0">
  15. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  16. <meta http-equiv="description" content="This is my page">
  17. <!--
  18. <link rel="stylesheet" type="text/css" href="styles.css">
  19. -->
  20. </head>
  21. <body>
  22. point1:<s:property value="point1"/><br>
  23. point2: <s:property value="point2"/><br>
  24. point3 <s:property value="point3"/>
  25. </body>
  26. </html>

第七步:类型转化器

在src目录下新建com.converter包 其中新建类PointConverter.java 代码如下

Java代码  

  1. package com.converter;
  2. import java.util.Map;
  3. import org.apache.struts2.util.StrutsTypeConverter;
  4. import com.bean.Point;
  5. public class PointConverter extends StrutsTypeConverter {
  6. @Override
  7. public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
  8. Point point = new Point();
  9. String[] values= arg1[0].split(",");
  10. int x = Integer.parseInt(  values[0].trim() );
  11. int y = Integer.parseInt(  values[1].trim()  );
  12. point.setX(x);
  13. point.setY(y);
  14. return point;
  15. }
  16. @Override
  17. public String convertToString(Map arg0, Object arg1) {
  18. Point  point = (Point) arg1;
  19. int x = point.getX();
  20. int y  = point.getY();
  21. String result = "<x= "+x+" ,  y="+y+" >";
  22. return result;
  23. }
  24. }

第八步:

使类型转化器和action中的对应point属性关联起来新建一个properties文件

这里有两种方法:

第一种是在com.converter包中新建一个PointAction-conversion.properties文件

代码如下:

Properties代码  

  1. point1=com.converter.PointConverter
  2. point2=com.converter.PointConverter
  3. point3=com.converter.PointConverter

第二种:是在src目录下直接新建一个文件 xwork-conversion.properties

代码如下

Properties代码  

  1. com.bean.Point=com.converter.PointConverter

ok

struts中的类型转换(2)

时间: 2024-12-18 01:29:11

struts中的类型转换(2)的相关文章

Struts中数据处理

对数据操作的所有方法:(把数据保存到域中)方式1.直接获取ServletAPI(耦合)核心类:ServletActionContext 提供静态方法(解耦) HttpServletRequest request=ServletActionContext.getRequest(); HttpSession session= request.getSession(); ServletContext application=ServletActionContext.getServletContext(

Struts2中的类型转换失败

类型转换失败: 若 Action 类没有实现 ValidationAware 接口: Struts 在遇到类型转换错误时仍会继续调用其 Action 方法, 就好像什么都没发生一样. 若 Action 类实现类 ValidationAware 接口(一般继承ActionSupport类就可以了,因为这个默认的Action类已经实现了我们所需的ValidationAware接口):Struts 在遇到类型转换错误时将不会继续调用其 Action 方法:  Struts 将检查相关 action 元

Struts中Validate()和validateXxx的使用

Struts中Validate()和validateXxx的使用 学习struts2之后,你会发现validate在之前是没有的!它是怎么实现的呢? validate和validateXxxx都是拦截器实现的!在一个action中如果调用里面的方法则一点会去调用validate这个方法.而如果有validateXxxx这个方法.就要看你现在调用的是不是Xxxx了! 比如,现在外面调用的是login方法(在action)中.顺序是: validateLogin->validate->login

Json在Struts中的转换与传递

本文主要探讨普通数据如何快速转换为Json数据,一共讨论2种方法: 首相准备页面和实体类: 页面: <body> <div id="topLoginDiv"> 用户名: <input name="user.name" id="loginName" />  密码: <input name="user.password" id="loginPassword" />

java中强制类型转换

在Java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换. 在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需要强制转换.因为子类拥有比父类更多的属性.更强的功能,所以父类转换为子类需要强制.那么,是不是只要是父类转换为子类就会成功呢?其实不然,他们之间的强制类型转换是有条件的. 当我们用一个类型的构造器构造出一个对象时,这个对象的类型就已经确定的,也就说它的本质是不会再发生变化了.在Java中我们可以通过

Action开发、通配符、路径问题和struts中常量用法

1.action开发 开发的几种方式 (1).继承自ActionSupport,(如果用struts的数据效验功,能必须必须使用此功能,因为ActionSupport实现了数据效验的接口) public class UserAction extends ActionSupport{} (2).实现Action接口,该接口的内容如下.(有五个常量和一个方法) pubic interface Action{ public static final String success="success&qu

c 中的类型转换

1. c 中的类型转换是临时对变量值的转换,一般分为: 强制类型转换,自动类型转换.自动转换中一般遵守无论表达式的值是什么样的,系统都自动将其 转换为赋值运算符左边变量的类型. 2. 当 int 赋给char 时,将int 保留低 8 位赋给 char 型变量.当 long 赋给 int 时,将 long 的低16 位保留赋给 int 型变量.

Struts中Action&ActionForm

在Struts架构中,通常使用一种名为ActionForm的系统状态Bean,来实现应用系统的非持久性数据存储和维护功能.具体来说,这种类型的对象主要用于保存用户请求表单中的数据,并可保持其状态的连续性,即在不同的页面间传递这些数据. ActionForm Bean的运行处理过程如下: 控制器ActionServlet接收到一个客户端请求后,会将该请求委托给一个RequestProcessor对象进行处理.该对象是遵照配置文件struts-config.xml中与该请求匹配的<action>子

Struts中的常量

下面是Struts中常量的一些常用配置,保存下来留作积累吧. <?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"