读书人

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

发布时间: 2012-11-08 08:48:11 作者: rapoo

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" namespace="/param" extends="struts-default"><action name="param_action" namespace="/default_action" extends="struts-default"><default-action-ref name="index"></default-action-ref><default-class-ref name="code">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


读书人网 >编程

热点推荐