`
zds420
  • 浏览: 198681 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

Struts2 Action接受参数、简单数据验证

 
阅读更多

Struts2 Action接受参数

STEP 1:

    index.jsp页面内容

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
     struts2中的路径问题
   struts2的路径
1) 在struts2中的路径问题是根据action的路径而不是jsp路径确定,所以尽量不要使用相对路径。
2) 可以使用redirect方式解决,但是refirect方式并非必要。
3) 解决办法非常简单,统一使用绝对路径.(在jsp中使用request.getContextRoot()方式来获取webapp的路径)
  和使用MyEclipse经常使用的,指定basePath路径。
  <a href="/action/test01.action">路径问题->path路径下面</a>
     <br/>
     struts2中接受参数有三种方式;
     1:属性接受参数
     <a href="/param/param_action!query.action?user_name=zhudansheng&book_name=struts2学习实战&age=25&test_name=测试用户名">属性接受参数</a>
     2:域模型(就是实体类)此方法最常用
     <a href="/param/domain_action!modify.action?user_model.user_name=zhudanshengtest&user_model.book_name=struts2学习实战好呀&user_model.age=25&user_model.test_name1=测试用户名shima">域模型(就是实体类)接受参数</a>
  	 3:驱动模型接口
	 <a href="/param/param_action!edit.action?user_name=zhudanshengtest&book_name=struts2学习实战好呀&age=25&test_name=测试用户名shima">域模型(就是实体类)接受参数</a>
 <br/>
 	默认ACTON的执行
 	<a href="/default_action/">默认ACTON的执行</a>
  </body>
</html>

   


 STEP2:

 

 

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<constant name="i18n" value="utf-8"></constant>
	<!-- 
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />

    <package name="default" namespace="/" extends="struts-default">

        <default-action-ref name="index" />

        <global-results>
            <result name="error">/error.jsp</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error"/>
        </global-exception-mappings>

        <action name="index">
            <result type="redirectAction">
                <param name="actionName">HelloWorld</param>
                <param name="namespace">/example</param>
            </result>
        </action>
    </package>

    <include file="example.xml"/>
 	-->
    <!-- Add packages here -->
	<!-- 
	<package name="default" namespace="/" extends="struts-default">
		<action name="helloworld">
			<result>/helloworld.jsp</result>
		</action>
	</package>
	-->
	<!--  使用Action 的三种方式,在企业最常用的是继承ActionSupport类 -->
	<package name="default" namespace="/action" extends="struts-default">
		<action name="test01" class="com.demo.action.DemoAction01">
			<result name="success">/path/path01.jsp</result>
		</action> 
	</package>
	
	<package name="param" namespace="/param" extends="struts-default">
		<action name="param_action" class="com.demo.action.ParamActionDemo01">
			<result name="success">/path/path01.jsp</result>
		</action> 
		<action name="domain_action" class="com.demo.action.ParamDomainModelActionDemo01">
			<result name="success">/path/path01.jsp</result>
		</action> 
	</package>
	<!-- 默认ACTION的执行 -->
	<package name="def" namespace="/default_action" extends="struts-default">
		<default-action-ref name="index"></default-action-ref>
		<default-class-ref class="com.demo.action.DemoAction01"></default-class-ref>
		<action name="index" class="com.demo.action.DemoAction01">
			<result name="success">/path/path01.jsp</result>
		</action> 
	</package>
	
</struts>

 

 

SETP3:

 

方法1:

Action 的 URL 传递接受参数:

在URL中传递过来参数和ACTION的成员变量的参数是一一对应关系。

 

 

package com.demo.action;

import com.opensymphony.xwork2.ActionSupport;

public class ParamActionDemo01 extends ActionSupport {
	
	private String user_name;
	private String book_name;
	private String age;
	private String test_name1;
	public String query() {
		
		System.out.println("用户名:"+this.user_name);
		System.out.println("书  名:"+this.book_name);
		System.out.println("年  龄:"+this.age);
		System.out.println("测试用户名:"+this.test_name1);
		return SUCCESS;
	}

	public String getUser_name() {
		return user_name;
	}

	public void setUser_name(String user_name) {
		this.user_name = user_name;
	}

	public String getBook_name() {
		return book_name;
	}

	public void setBook_name(String book_name) {
		this.book_name = book_name;
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}

	public String getTest_name() {
		return test_name1;
	}

	public void setTest_name(String test_name) {
		this.test_name1 = test_name;
	}
}
 

 

 

实验:Action的成员变量和方法中的变量是struts2给成员变量赋值还是给对应的方法中的变量赋值。

 

方法2:域模型(domain model) 常用

域模型其实就是实体类(实实在在的物体)

使用域模型可以创建一个实体类,通过实体类接受参数。

 

 

package com.demo.action;

import com.demo.model.UserModel;
import com.opensymphony.xwork2.ActionSupport;

public class ParamDomainModelActionDemo01 extends ActionSupport{
	
	private  UserModel  user_model;
	
	public String modify() {
		//连接数据库,操作数据库数据
		//UserModel struts2中自动生成对象
		System.out.println("model 用户名:"+user_model.getUser_name());
		System.out.println("model 书  名:"+user_model.getBook_name());
		System.out.println("model 年  龄:"+user_model.getAge());
		System.out.println("model 测试用户名:"+user_model.getTest_name1());
		return SUCCESS;
	}

	public UserModel getUser_model() {
		return user_model;
	}

	public void setUser_model(UserModel user_model) {
		this.user_model = user_model;
	}
	
	
	
}
 

 

 

 

 

查资料:DTO

 

方法3:模型驱动接受参数(model driven)

非常重要哦程序设计思想,但是不常用

 

 

package com.demo.action;

 

import com.opensymphony.xwork2.ActionSupport;

import com.opensymphony.xwork2.ModelDriven;

import  com.demo.model.UserModel;

 

/**

 * 模型驱动接口传递参数需要声明和实例化实体类 需要通过使用getModel()方法获取参数。

 * 

 * 模型驱动是一种设计编程思路的思想

 * 

 * 设计思想是MVC

 * @author Administrator

 *

 */

public class ModelDrivenAction extends ActionSupport implements ModelDriven<UserModel>{

private UserModel userModel =new UserModel();

public String edit() {

return SUCCESS;

}

public UserModel getModel(){

return userModel;

}

}


 

 

 

Struts中的模型驱动是有一个getModel() 获取接受参数。

 

STRUTS2 MVC

 

 

接受参数的中文乱码问题?????

 

 

方法:读程序可以使用一条线,或者使用DEBUG,根据业务流程读源程序

努力:

总结:

 

 

 

 

Action 简单数据验证

使用addFieldError和<s:fielderror />标签处理数据校验的正确性

value stack


分享到:
评论

相关推荐

    Struts2 in action中文版

    第1章 Struts 2:现代Web框架 2 1.1 Web应用程序:快速学习 2 1.1.1 构建Web应用程序 2 1.1.2 基础技术简介 3 1.1.3 深入研究 6 1.2 Web应用程序框架 7 1.2.1 什么是框架 7 1.2.2 为什么使用框架 8 1.3 Struts 2框架...

    马士兵Struts2笔记2013

    建立一个Struts2 工程,用Action的属性接收参数,使用Domain Model (实体模型) 接收参数,Struts2_2.1.6版本的中文问题,Struts模块包含,Struts简单数据验证 ,Struts ValueStack(值栈) Debug,Value Stack ...

    Struts2 学习笔记

    十一、 简单数据验证 12 十二、 访问Web元素 14 一、 方法一:ActionContext方式 15 二、 方式二:Ioc(控制反转)—推荐使用 15 三、 方式三:获取原类型 16 四、 方式四:获取原类型-控制反转 17 十三、 Struts2配置...

    Struts2帮助```````

    十一、 简单数据验证 12 十二、 访问Web元素 14 一、 方法一:ActionContext方式 15 二、 方式二:Ioc(控制反转)—推荐使用 15 三、 方式三:获取原类型 16 四、 方式四:获取原类型-控制反转 17 十三、 Struts2配置...

    深入浅出Struts2(附源码)

    作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,如数据类型转换、文件上传和下载、提高Struts 2应用的安全性、调试与性能分析、FreeMarker、Velocity、Ajax,等等。跟随作者一道深入Struts 2,聆听...

    maven3+struts2+spring+ibatis

    maven3+struts2+spring+ibatis,本来是用maven3+struts2+spring+hibernate但考虑到hibernate在多表级联查询的时候执行效率不高,所以改用性能更好不过sql比较麻烦的的ibatis,本项目只有登录和插入数据,仅供参考: ...

    Struts_开发的最佳实践

    ActionForm 是一些封装和验证请求参数的简单 JavaBean。要验证请求数据,ActionForm 的 validate() 方法必须给出一个特定于该情况的实现。ActionForm 作为运载工具,向 Action 类提供请求数据。一个 JSP 对象与各自...

    maven3.0+struts+spring+hibernate

    这个属于与Spring整合的问题,Spring容器在初始化对象的时候会根据bean的scope配置来考虑是重新建立一个对象,还是继续使用原来的对象,拿struts2的action的bean来说,如果scope这个参数没有配置,默认就是单例,即...

    Struts1.3 备忘笔记

    04 Struts_04DispatchAction : 分发Action,根据设置的参数值提交到不同的方法进行处理业务,演示数学运算 05 Struts_05DynaActionForm : 相对应ActionForm来说,动态ActionForm只需要在配置文件中配置就可以了,...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax 的支持,等等。...

    structs程序设计从入门到精通word文档

    9.4 StrutsAction单态陷阱,请谨慎使用全局变量 13 9.5 Struts异常处理 13 第10章 struts中使用国际化(i18n) 13 10.1 struts国际化程序尝试 13 10.1 Java对i18n的支持 14 10.1 struts框架中对国际化的支持 14 第11...

    Spring in Action(第二版 中文高清版).part2

    16.2 协同使用Spring和WebWork 2/Struts 2 16.3 集成Spring和Tapestry 16.3.1 集成Spring和Tapestry 3 16.3.2 集成Spring和Tapestry 4 16.4 协同使用Spring和JSF 16.4.1 解析JSF管理的属性 16.4.2 解析Spring...

    Spring in Action(第2版)中文版

    16.2协同使用spring和webwork2/struts2 16.3集成spring和tapestry 16.3.1集成spring和tapestry3 16.3.2集成spring和tapestry4 16.4协同使用spring和jsf 16.4.1解析jsf管理的属性 16.4.2解析springbean 16.4.3...

    java 经典面试题 于网络分享

    B 在FormBean中可以对页面上传递来的参数进行一下格式上的验证,这种验证是一种客户端的验证 C 用户每次提交表单,都会产生一个新的FormBean实例 D 动态FormBean不能进行验证操作 答案:A 8.以下哪些不是...

    AnyFo - Struts 2_1爆胎易筋丸.pdf

    5 数据验证...........................................................................................................................14 5.1 validate 方法验证..............................................

    达内java培训目录

    Struts2 Struts2核心控制流程、Ognl、Action、Interceptor、Result、FreeMarker、Struts2标记库、Struts2扩展、Struts2应用技巧(输入验证、消息国际化、文件上传和下载、防止重复提交等)。 熟练掌握Struts2核心...

    外文翻译 stus MVC

    • Before passing it to the Action class, Struts will also conduct form state validation by calling the validation() method on UserActionForm. Note: This is not always wise to do. There might be ways ...

    Spring in Action(第二版 中文高清版).part1

    16.2 协同使用Spring和WebWork 2/Struts 2 16.3 集成Spring和Tapestry 16.3.1 集成Spring和Tapestry 3 16.3.2 集成Spring和Tapestry 4 16.4 协同使用Spring和JSF 16.4.1 解析JSF管理的属性 16.4.2 解析Spring...

Global site tag (gtag.js) - Google Analytics