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 ...
随机推荐
- Android学习笔记_53_Android界面的基本属性
很好很全面http://www.eoeandroid.com/forum.php?mod=viewthread&tid=46859 布局: 在 android 中我们常用的布局方式有这么几种: ...
- 关于ProjectServer调用PSI 报Error GeneralReadOnlyColumn (20005) - column TS_ACT_FINISH_DATE错的解决方案
TimesheetDataSet Table Actuals Row: TS_LINE_UID='f4b970f8-fb03-44d1-9997-cd31da42cb09' TS_ACT_START_ ...
- JS JavaScript闭包和作用域
JavaScript高级程序设计中对闭包的定义:闭包是指有权访问另外一个函数作用域中变量的函数. 从概念上,闭包有两个特点: 1.函数 2.能访问另外一个函数的作用域中的变量 在ES6之前,JavaS ...
- Oracle之视图
Oracle之视图 2018.9.12 由于视图的数据与表数据互相关联,所以切记谨慎操作 建立视图 使用下面sql语句来完成视图的创建 create or replace view 视图名 as se ...
- eclipse内存溢出解决
1 查看内存: workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs,在里面加上SH ...
- jwplayer 参数记录
jwplayer().getPosition()://播放了多少秒 jwplayer('playerdiv').play(); || jwplayer(0).play(true/false); // ...
- Sass学习日志
一.什么是SASS SASS是一中CSS的开发工具,提供了许多便利的写法,大大节约了设计者们的时间,使得CSS的开发,变得简单和可维护.本文总结了SASS的主要方法.我们的目标是,有了这篇文章,日常的 ...
- 构建高可靠hadoop集群之3- Quorum Journal Manager
在正式环境中,搭建高可靠(ha)的系统是必须的. 例如oralce的rac,apache集群,windows服务器集群 本文不再赘言ha的重要性. 本文主要是对 http://hadoop.apach ...
- javascript--select标签的添加删除功能的使用
在网页开发中,常常遇见这种问题,给定两个框,A和B,和几个图片按钮,A中存在几个操作,点击图片按钮,填加至B中,或者从B中移除等,这种效果如何实现,本文加以总结. 几种效果图如下: 原始图: ...
- Java : 实体类不能序列化异常
当修改实体类之后调用接口出现不能序列化的异常时,一定要检查实体之间的关系是否都是正确的. could not serialize; nested exception is org.hibernate. ...