`
zds420
  • 浏览: 202724 次
  • 性别: 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验证框架参数

    在深入探讨Struts2验证框架参数之前,我们首先简要回顾一下Struts2框架本身。Struts2是基于MVC(Model-View-Controller)设计模式的Java Web应用框架,它提供了一种灵活的方式来构建可扩展的企业级Web应用程序。...

    Struts2 的接受参数的几种方式

    ### Struts2 接受参数的几种方式 #### 第一种方式:直接在 Action 中设置变量 这种方式是最直接的参数接收方式。当从前端传递参数到后端时,我们需要确保 Action 类中有与这些参数名称相匹配的变量。例如,如果...

    struts2的Ajax实现注册验证

    一个简单的例子是使用`$.ajax()`函数,指定URL为Struts2 Action的路径,方法为GET或POST,根据你的需求来传递参数,如待验证的用户名。 3. **服务器端验证**:在Action类中,你需要编写一个方法来检查用户名是否已...

    Struts2数据输入验证教程详解

    Struts2是一个流行的Java web开发框架,它提供了一种强大的数据输入验证机制,确保用户提交的数据符合预期格式和约束。本教程将深入讲解Struts2中的数据输入验证,包括两种主要验证方式:客户端验证和服务端验证。...

    Struts2 校验器

    在Struts2中,校验器(Validator)是处理用户输入验证的核心组件,确保提交到服务器的数据符合预设的业务规则。这篇博客文章可能是关于如何使用Struts2的内置校验机制以及自定义校验规则的探讨。 Struts2的校验框架...

    Struts2中Validation数据验证框架教程

    在Struts2中,Validation框架是用于处理数据验证的重要组件,它允许开发者在用户输入提交到服务器之前或之后进行验证,确保数据的准确性和完整性。下面将详细解释Struts2中的Validation框架及其在前后台验证中的应用...

    struts2参数配置

    ### Struts2参数配置详解 #### 一、概述 在深入了解Struts2框架时,我们不可避免地会接触到各种参数配置。这些配置对于整个框架的运行至关重要。本文将围绕Struts2中的关键配置进行深入探讨,旨在帮助开发者更好地...

    struts1.x 和 struts2.x向Action里填充jsp参数原理

    本篇文章将深入探讨Struts1.x和Struts2.x在向Action中填充JSP参数的原理。 Struts1.x的工作原理: Struts1的核心是ActionServlet,它是一个实现了Servlet接口的控制器。当用户发起HTTP请求时,请求会被Dispatcher...

    Struts2表单验证

    Struts2是一个流行的Java web开发框架,其在处理用户表单数据时提供了强大的验证功能,确保输入的数据符合预期的格式和规则。本文将深入探讨Struts2的表单验证机制。 首先,Struts2的输入验证分为两种方式:手动...

    struts2 登陆注册 以及验证

    Struts2的Validator插件支持基于XML或注解的服务器端验证,可以在Action类中定义验证规则。 在XML验证中,会在struts-plugin.xml或struts.xml中配置Validator的引用,然后在单独的validation.xml文件中定义每个...

    Struts2 in action

    - **定义**:拦截器是在Action执行前后执行的一段代码,可以用来做一些预处理或后处理的工作,比如权限验证、数据验证等。 - **实现方式**:通过继承`Interceptor`接口或其子接口来实现自定义的拦截器。 - **应用...

    Struts2的Action多个方法配置和验证

    这篇博客主要讨论了如何配置Struts2 Action中的多个方法以及如何进行数据验证。 首先,一个Action类可以包含多个方法,每个方法对应一个特定的HTTP请求。这种多方法配置允许我们根据不同的请求路径来调用不同的业务...

    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实验一:动态方法调用+请求参数的获取+简单的表单数据验证

    本实验主要涉及三个核心概念:动态方法调用、请求参数的获取以及简单的表单数据验证。 **动态方法调用(Dynamic Method Invocation,DMI)** 在Struts2中,动态方法调用是其一大特性,允许开发者通过URL直接调用...

    struts2 接收参数

    这篇博客文章可能深入探讨了Struts2如何在Action类中获取和管理这些参数。 首先,Struts2的核心是DispatcherServlet,它负责拦截所有的HTTP请求,并根据配置的拦截器栈来处理请求。在Struts2中,Action类是业务逻辑...

    Struts2InAction中文+源代码

    5. **类型转换与数据校验**:Struts2内置了强大的类型转换器和数据校验机制,能够自动将HTTP请求参数转化为Java对象,同时进行数据的合法性验证。 6. **Ajax支持**:Struts2通过JSON结果类型和Ajax插件,方便地实现...

    应用Struts2处理表单数据

    综上所述,"应用Struts2处理表单数据"这个主题涵盖了Struts2框架中的诸多关键概念,包括Action设计、表单数据绑定、结果处理、拦截器、配置、表达式语言以及验证和异常处理机制。这些知识点对于理解和开发基于Struts...

Global site tag (gtag.js) - Google Analytics