Struts2(四.注册时检查用户名是否存在及Action获取数据的三种方式)
一.功能
1.用户注册页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册</title>
<script type="text/javascript" src="jslib/jquery-1.11.1.js"></script>
<script type="text/javascript">
$(function(){
$("[name='user.userName']").blur(function(){
if($.trim($(this).val())=="")
{
$("[name='user.userName']").select();
$("[name='user.userName']").focus();
$("#msg").html("请输入用户名!");
return false;
}
$.post("${pageContext.request.contextPath}/user/checkExists",{"user.userName":$(this).val()},function(data){
$("[name='isExists']").val(data)
if(data=="1")
{
$("#msg").html("用户名已存在,请重新输入!");
}
});
});
});
</script>
</head>
<body>
用户注册
<br>
<br>
<form method="post" action="${pageContext.request.contextPath}/user/add">
<table>
<tr><td>用户名:</td><td><input type="text" name="user.userName"></td></tr>
<tr><td>密码:</td><td><input type="password" name="user.pwd"></td></tr>
<tr><td colspan="2"><input type="submit" value="提交"></td></tr>
</table>
</form>
<!-- 隐藏变量,用来判断用户名是否重复,不写在表单中,因为action中没有接收的属性-->
<input type="hidden" name="isExists" value="0"/>
<div id="msg"></div>
<br>
<br>
<a href="${pageContext.request.contextPath}/main.jsp">返回主页面</a>
</body>
</html>
2.UserAction
package myuser; import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.naming.NamingException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import mypicture.Picture;
import mypicture.PictureDAO; /**
* @author wanghaoran create 2018年4月8日下午3:18:55
* 为了比较方便继承ActionSupport
*/
public class UserAction extends ActionSupport { /**
* action运行的时候的servlet环境
* 获取response
*/
HttpServletResponse response=ServletActionContext.getResponse();
/**
* 获取request,再获取session
*/
HttpServletRequest request=ServletActionContext.getRequest();
HttpSession session=request.getSession();
PrintWriter out; /**
* 向action注入数据的方式,通常使用Domain Model的方式
*/
private User user; public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
/**
* 检查与用户名是否重复
* @return
* @throws Exception
*/
public String checkExists() throws Exception {
out=response.getWriter();
UserDAO dao=new UserDAO();
if(dao.checkExists(user))
{
out.print("1");
}
else
{
out.print("0");
}
return null;
}
}
3.UserDAO
/**
* 检查用户名是否重复
* @param user
* @return
* @throws SQLException
*/
public boolean checkExists(User user) throws SQLException
{
sql="select * from users where userName=?";
boolean flag=false;
ps=conn.prepareStatement(sql);
ps.setString(1, user.getUserName());
ResultSet rs=ps.executeQuery();
if(rs.next())
{
flag=true;
}
conn.close();
return flag;
}
二.Action获取数据的三种方式
1.注入属性
UserAction:
private String userName;
private String getUserName(){
return userName;
}
private void setUserName(String userName){
this.userName=userName;
}
@Override
public String checkExists() throws Exception {
User user = new User();
user.setUserName(userName);
UserDAO dao=new UserDAO();
if(dao.checkExists(user))
{
out.print("1");
}
else
{
out.print("0");
}
return null;
}
前端:
$.post("checkExists.action",{"userName":$(this).val()},function(data)
2.Domain Model 这是一般常用的方式(工作中常用,本项目也使用此方法)
private User user;
然后做setter和getter
3.ModelDriven(使用很少)
(1)Action实现ModelDriven<User>接口并添加抽象方法
public User getModel()
{
return user;
}
(2)定义并初始化一个模型并生成setter和getter
private User user = new User();
Struts2(四.注册时检查用户名是否存在及Action获取数据的三种方式)的更多相关文章
- 【Struts2】Struts2获取session的三种方式
1.Map<String,Object> map = ActionContext.getContext().getSession(); 2.HttpSession session = S ...
- 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】
一.JDBC编程特点 静态代码+动态变量=JDBC编程. 静态代码:比如所有的数据库连接池 都实现了DataSource接口,都实现了Connection接口. 动态变量:用户名.密码.连接的数据库. ...
- 【深入Struts2】获取ServletAPI的三种方式
一:获取servletAPI的三种方法 在传统的Web开发中,经常会用到Servlet API中的HttpServletRequest.HttpSession和ServletContext.Strut ...
- Struts2获取Session的三种方式
1.Map<String,Object> session = ActionContext.getContext().getSession(); session.put("cod ...
- Struts2学习(二)运行Action中方法的三种方式
1.运行execute()方法 一般的能够直接在action中书写execute,调用action时会自己主动运行此方法 2.配置method方法 在struts.xml中配置action时.写met ...
- 构造json参数时key的引号和js string转json的三种方式
{name:"dd",age:"16"} {"name":"dd","age":"16&q ...
- 解决dubbo注册zookepper服务IP乱入问题的三种方式
最近做一个项目引入了dubbo+zookepper的分布式服务治理框架.在应用的发布的时候出现一个怪问题.zookepper服务是起在开发服务器192.168.23.180上.本机起应用服务提供者注册 ...
- struts2 Action 接收参数的三种方法
刚学Struts2 时 大家可能遇到过很多问题,这里我讲一下Action 接收参数的三种方法,我曾经在这上面摔过一回.所以要警醒一下自己..... 第一种:Action里声明属性,样例:account ...
- 注册Jdbc驱动程序的三种方式
注册Jdbc驱动程序的三种方式 1. Class.forName("com.mysql.jdbc.Driver"); 2. DriverManager.registerDriver ...
随机推荐
- 了解Mysql与MariaDb的关系
MariaDB是MySQL源代码的一个分支,随着Oracle买下Sun,MySQL也落入了关系型数据库王者之手.在意识到Oracle会对MySQL许可做什么后便分离了出来(MySQL先后被Sun.Or ...
- HDU 1399 Starship Hakodate-maru(暴力搜索)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1399 Starship Hakodate-maru Time Limit: 2000/1000 MS ...
- Html 中阻止事件冒泡的三种方法比较
A:return false --->In event handler ,prevents default behavior and event bubbing . return ...
- java使用JSCH连接FTP(Linux服务器)上传文件到Linux服务器
首先需要用到jsch-0.1.54.jar 包: 链接: https://pan.baidu.com/s/1kZR6MqwpCYht9Pp_D6NKQw 密码: gywx 直接上代码: package ...
- Question20180106 Java环境变量的配置及为什么要配置环境变量
Question 1 Java环境变量的配置及为什么要配置环境变量 Q1.1为什么要配置环境变量 在学习JAVA的过程中,涉及到多个环境变量(environment variable)的概念,如PA ...
- zepto 基础知识(5)
81.width width() 类型:number width(value) 类型:self width(function(index,oldWidth){....}) 类型:self 获取对象集合 ...
- Vue--- Vue(Pubsub + Ajax) 数据交互
案例知识点 兄弟组件儿的通信 使用了Pubsub 订阅与发布 ajax数据请求 获取前 获取中 获取后 获取为空 获取异常 获取成功后显示数据给到 原先定义号的 ...
- js中FormData+XMLHttpRequest数据传输
前言: 首先我们需要了解,前后端进行数据传输依赖于浏览器的XMLHttpRequest对象 一.什么是XMLHttpRequest对象? XMLHttpRequest 是DOM对象,提供了对于http ...
- php第一节(入门语法、数据类型)
<?php /** * 变量命名用 $ 符 * 变量名称的命名规范 * 1.变量名称以$标示 * 2.变量名称只能以字母和下划线开头 * 3.变量的名称只能包含字母.下划线.数字 * 4.变量名 ...
- boost::asio::ip::tcp中几个重要类型
typedef basic_stream_socket socket; 流式套接字,提供同/异步发送接收数据,连接,绑定,设置套接字选项等功能 对于socket中的connect()方法,它只针对某一 ...