以用户名注册为例分析三种Action获取数据的方式

1.注入属性

直接注入属性:

public String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub

User user = new User();
user.setUserName(userName);//在这里需要将username接收到并且去使用。
UserDAO dao = new UserDAO();
HttpServletResponse response= ServletActionContext.getResponse();
PrintWriter out = response.getWriter();
if(dao.checkExists(user))
{
out.print("");
}
else
{
out.print("");
}
return null;
}

2.Domain Model 这是一般常用的方式

这里就不重复说明,

3.ModelDriven

第三种方法不常用,只需要了解;

其过程分为4个步骤:
(1)action实现ModelDriven<User>接口

(2) 添加抽象方法

(3)定义并初始化一个模型

   User user=new User();

(4)生成setter和getter

public class CheckUserAction extends ActionSupport implements ModelDriven<User>{
private User user = new User();
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
UserDAO dao = new UserDAO();
HttpServletResponse response= ServletActionContext.getResponse();
PrintWriter out = response.getWriter();
if(dao.checkExists(user))
{
out.print("");
}
else
{
out.print("");
}
return null;
}
@Override
public User getModel() {
// TODO Auto-generated method stub
return user;
}

注意:在使用方法1和3的时候前端及jsp代码部分无需需改,因为是直接调用的userName属性。

方法2需要将jquery中的username变为,user.username。

(0)

相关推荐

  • 如何在数据库中用好Transaction?

    如何在数据库中用好Transaction?在ASP的实际操作中,总会发生这样的情况,如在银行,从我的帐户往费文华的帐户划款,我的帐户显示已经划出,但因银行的系统出现故障,导致费文华帐户的数据库更改失败,这应该怎样处理呢?我帐户的金额应该没有损失吧? 你的利益当然没有损失,已经更改的帐户数据库资料会自动恢复.这里用到的就是互动功能(TRANSACTION),它是由IIS与MTS(Mircrosoft Transaction Server)共同完成的.它的功能就是:当ASP程序中所有的数据库的更改都

  • ext前台接收action传过来的json数据示例

    ext前台接收action传过来的json数据 复制代码 代码如下: Ext.Ajax.request({ method:'POST',//请求方式 params : {dagl_code:dagl_code}, url:lcwPath+"/daxt/lcgl.shtml?method=getJgBycode",//请求的url地址 success: function(response, opts) { if(response.responseText!='{}'){ alert(re

  • MySQL数据库事务隔离级别介绍(Transaction Isolation Level)

    数据库隔离级别有四种,应用<高性能mysql>一书中的说明: 然后说说修改事务隔离级别的方法: 1.全局修改,修改mysql.ini配置文件,在最后加上 复制代码 代码如下: #可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE. [mysqld] transaction-isolation = REPEATABLE-READ 这里全局默认是REPEATABLE-READ,其实MySQL本来默认也是这个级别

  • 以用户名注册为例分析三种Action获取数据的方式

    1.注入属性 直接注入属性: public String userName; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } @Override public String execute() throws Exception { // TODO Auto-generated method stub Use

  • Mybatis三种批量插入数据的方式

    1. 循环插入 mapper.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.buhe.

  • sql下三种批量插入数据的方法

    本文将介绍三种批量插入数据的方法.第一种方法是使用循环语句逐个将数据项插入到数据库中:第二种方法使用的是SqlBulkCopy,使您可以用其他源的数据有效批量加载 SQL Server 表:第三种使用的方法是sql server中的表值参数方法,表值参数是 SQL Server 2008 中的新参数类型.表值参数是使用用户定义的表类型来声明的.使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据. 代码示例: 此例子为控制台输出

  • JavaScript中三种异步上传文件方式

    异步上传文件是为了更好的用户体验,是每个前端必须掌握的技能.这里我提出三点有关异步文件上传的方式. 使用第三方控件,如Flash,ActiveX等浏览器插件上传. 使用隐藏的iframe模拟异步上传. 使用XMLHttpRequest2来实现异步上传. 第一种使用浏览器插件上传,需要一定的底层编码功底,在这里我就不讲了,以免误人子弟,提出这点大家可以自行百度. 第二种使用隐藏的iframe模拟异步上传.为什么在这里说的是模拟呢?因为我们其实是将返回结果放在了一个隐藏的iframe中,所以才没有使

  • 详解三种java实现多线程的方式

    java中实现多线程的方法有两种:继承Thread类和实现runnable接口. 1.继承Thread类,重写父类run()方法 public class thread1 extends Thread { public void run() { for (int i = 0; i < 10000; i++) { System.out.println("我是线程"+this.getId()); } } public static void main(String[] args) {

  • 详解三种C#实现数组反转方式

    今天上班中午吃饱之后.逛博客溜达看到一道题:数组反转  晚上回家洗完澡没事情做,就自己练习一把. public static class ArrayReserve { /// <summary> /// 使用 Array.Reverse(Arrar) 反转全部 /// </summary> /// <param name="arr"></param> public static void ReverseDemo1(int[] arr) {

  • 关于分布式锁的三种实现方式

    目录 分布式锁实现方案 基于数据库实现分布式锁 基于Zookeeper实现分布式锁 加锁和解锁流程 利用curator实现 基于缓存实现分布式锁,以Redis为例 三种方案比较 Java中的锁主要包括synchronized锁和JUC包中的锁,这些锁都是针对单个JVM实例上的锁,对于分布式环境如果我们需要加锁就显得无能为力. 在单个JVM实例上,锁的竞争者通常是一些不同的线程,而在分布式环境中,锁的竞争者通常是一些不同的线程或者进程.如何实现在分布式环境中对一个对象进行加锁呢?答案就是分布式锁.

  • 浅谈js中的三种继承方式及其优缺点

    第一种,prototype的方式: //父类 function person(){ this.hair = 'black'; this.eye = 'black'; this.skin = 'yellow'; this.view = function(){ return this.hair + ',' + this.eye + ',' + this.skin; } } //子类 function man(){ this.feature = ['beard','strong']; } man.pr

  • React创建组件的三种方式及其区别

    React推出后,出于不同的原因先后出现三种定义react组件的方式,殊途同归:具体的三种方式: 函数式定义的无状态组件 es5原生方式React.createClass定义的组件 es6形式的extends React.Component定义的组件 虽然有三种方式可以定义react的组件,那么这三种定义组件方式有什么不同呢?或者说为什么会出现对应的定义方式呢?下面就简单介绍一下. 无状态函数式组件 创建无状态函数式组件形式是从React 0.14版本开始出现的.它是为了创建纯展示组件,这种组件

  • vue中向data添加新属性的三种方式小结

    目录 向data添加新属性的三种方式 原理分析 三种方式 vue组件 data等属性介绍 向data添加新属性的三种方式 原理分析 首先在了解这三种方式之前,我觉的有必要说一下,为啥不能直接手动给data中的对象添加属性呢? 下面咱们一块分析下: vue2 是通过数据劫持 “Object.defineProperty” 实现数据响应式:     const obj = {};         let val = 'kk'         Object.defineProperty(obj,'na

随机推荐