ajax struts登录验证码,Struts2+AJAX+JQuery 实现用户登入与注册功能

要求:

必备知识:JAVA/Struts2,JS/JQuery,HTML/CSS基础语法;

开发环境:MyEclipse 10

d388ac422baf236a0d510cf200cc2b5c.png

7c2f2553bfd256afd95525bb7eb1e5e3.png

6e6e25b3c9cd3ca79d666d0ecab1b25e.png

ff85db00725a86916e17ee8c8bf72703.png

关于UI部分请查看下列链接,有详细制作步骤:

前段时间学校刚学完Struts2-Action篇,又自学了一点AJAX/JQuery,到网上看了一些CSS3知识。突然想要不要干脆做一个用户注册与登入功能。下面是JAVA部分的核心代码, 如果这样的逻辑和大家想的很有出入的话,欢迎拍砖劈斧,呵呵。

UserAction.java

package action;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.LinkedList;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;

import com.opensymphony.xwork2.ActionSupport;

import dao.UserDao;

import entity.User;

public class UserAction extends ActionSupport {

private String contentType = "text/html;charset=utf-8";

private User user;

private LinkedList users;

public LinkedList getUsers() {

return users;

}

public void setUsers(LinkedList users) {

this.users = users;

}

public User getUser() {

return user;

}

public void setUser(User user) {

this.user = user;

}

/**

* 查询用户 登入验证

* @return

* @throws IOException

*/

public void select() throws IOException{

//指定输出内容类型和编码

ServletActionContext.getResponse().setContentType(contentType);

//获取输出流,然后使用

PrintWriter out = null;

out = ServletActionContext.getResponse().getWriter();

this.user=new UserDao().select(user); //给this.user赋值

if(user==null){

out.print("登入失败");

}else{

ActionContext actionContext=ActionContext.getContext();

actionContext.getSession().put("user",user);

actionContext.getSession().put("users",new UserDao().getList());

out.print("登入成功");

}

out.flush();

out.close();

}

/**

* 添加用户控制器

* @throws Exception

*/

public void add() throws IOException{

//指定输出内容类型和编码

ServletActionContext.getResponse().setContentType(contentType);

//获取输出流,然后使用

PrintWriter out = null;

out = ServletActionContext.getResponse().getWriter();

int rs=new UserDao().add(this.user);

if(rs==1){

ActionContext actionContext=ActionContext.getContext();

actionContext.getSession().put("user",user);

actionContext.getSession().put("users",new UserDao().getList());

}

out.print(rs);

out.flush();

out.close();

//System.out.print(new UserDao().add(this.user)); 这里不能在用 System.out.print() 否则后台报错

}

public String upd(){

return null;

}

public String del(){

return null;

}

/*@Override

public String execute() throws Exception {

// TODO Auto-generated method stub

return super.execute();

}*/

}

UserDao.java

package dao;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.LinkedList;

import java.util.List;

import tools.ConvertJson;

import tools.JDBCUtilSingle;

import entity.User;

public class UserDao {

/**

* 插入操作 注册功能

* @param user 用户实例 POJO

* @return 操作标记 1成功 2邮箱存在 3用户名存在

*/

public int add(User user){

Connection connection=null;

PreparedStatement statement=null;

ResultSet rs=null;

connection=JDBCUtilSingle.getInitJDBCUtil().getConnection();

String sql="select * from form2_user where name=? or email=?";

try {

statement=connection.prepareStatement(sql);

statement.setString(1,user.getName());

statement.setString(2, user.getEmail());

rs=statement.executeQuery();

if(rs.next()){

if(rs.getString("email").equals(user.getEmail())){return 2;} //2邮箱存在

if(rs.getString("name").equals(user.getName())){return 3;} //3用户名存在

}

sql="INSERT INTO form2_user (`id`, `email`, `name`, `pass`) VALUES (NULL,?,?,?)";

statement=connection.prepareStatement(sql);

statement.setString(1,user.getEmail());

statement.setString(2,user.getName() );

statement.setString(3, user.getPass());

statement.executeUpdate();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally{

JDBCUtilSingle.getInitJDBCUtil().closeConnection(rs, statement, connection);

}

return 1; //1表示成功注册

}

/**

* 用户登录 放回登入用户对象信息

* @param user 用户对象

* @return

*/

public User select(User user){

Connection connection=null;

PreparedStatement statement=null;

ResultSet rs=null;

User myUser=null;

connection=JDBCUtilSingle.getInitJDBCUtil().getConnection();

String sql="select * from form2_user where (name=? or email=?) and pass=?";

try {

statement=connection.prepareStatement(sql);

statement.setString(1,user.getName());

statement.setString(2,user.getName());

statement.setString(3,user.getPass());

rs=statement.executeQuery();

if(rs.next()){

myUser=new User();

myUser.setName(rs.getString("name"));

myUser.setEmail(rs.getString("email"));

myUser.setPass(rs.getString("pass"));

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

JDBCUtilSingle.getInitJDBCUtil().closeConnection(rs, statement, connection);

}

return myUser;

}

/**

* 获取所有用户信息

* @return 用户集合

*/

public LinkedList getList(){

Connection connection=null;

PreparedStatement statement=null;

ResultSet rs=null;

User myUser=null;

LinkedList users=new LinkedList();

connection=JDBCUtilSingle.getInitJDBCUtil().getConnection();

String sql="select * from form2_user";

try {

statement=connection.prepareStatement(sql);

rs=statement.executeQuery();

while(rs.next()){

myUser=new User(rs.getString("email"),rs.getString("name"), rs.getString("pass"));

users.add(myUser);

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

JDBCUtilSingle.getInitJDBCUtil().closeConnection(rs, statement, connection);

}

return users;

}

}

User.java

package entity;

public class User {

private String email;

private String name;

private String pass;

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPass() {

return pass;

}

public void setPass(String pass) {

this.pass = pass;

}

public User(){}

public User(String email,String name, String pass){

this.email=email;

this.name=name;

this.pass=pass;

}

}

呵呵,又结束了,不知到你们看懂了没。请原谅童鞋我目前的表述能力只能到这了。欢迎大家来拍砖来劈斧,希望我幼小的心灵能抗得住。

Struts2+AJAX+JQuery 实现用户登入与注册功能。

要求 必备知识 JAVA/Struts2,JS/JQuery,HTML/CSS基础语法. 开发环境 MyEclipse 10 演示地址 演示地址 预览截图(抬抬你的鼠标就可以看到演示地址哦): 关于U ...

ssh整合问题总结--使用struts2+Ajax+jquery验证用户名是否已被注册

在用户模块中的用户注册需求上,通常要进行用户名是否已被注册的验证,今天正好写了这个需求,把详细代码和所遇到的问题贴过来.在使用struts2+ajax时候,通常我们会返回json类型的数据,但是像上面 ...

[Django]登陆界面以及用户登入登出权限

前言:简单的登陆界面展现,以及用户登陆登出,最后用户权限的问题 正文: 首先需要在settings.py设置ROOT_URLCONF,默认值为: ROOT_URLCONF  = 'www.urls'# ...

Django,COOKIES,SESSION完成用户登入

1.urls.py """Django_cookie_session URL Configuration The `urlpatterns` list routes UR ...

python编辑用户登入界面

1.需求分析 登入界面需要达到以下要求: 系统要有登入和注册两个选项可供选择 系统要能够实现登入出错提示,比如账户密码错误等,用户信息保存在user_info.txt文件夹中 系统要能够进行登入错误次 ...

python基础篇---实战---用户登入注册程序

一.首先了解需求: 1.支持多个用户登入 2.登入成功后显示欢迎,并退出程序 3.登入三次失败后,退出程序,并在下次程序启动尝试登入时,该用户名依然是锁定状态 二.文件代码如下: f = open(& ...

Oracle+struts2实现用户登入并显示访问次数

实体类: package entity; public class userfo { private int id;//id private String name;//用户名 private Str ...

MonGoDB 常见操作, 设置管理员和用户登入

[ 启动客户端 => ./bin/mongo --host 192.168.200.100 ] 1: 查看所有已经创建的数据库  =>  show dbs   2: 切换或者创建数据库   ...

【转】vsftpd用户登入不进去问题

实在是登陆不上... 我已经加了一个新的用户UID和GID都设置到1000以后 /etc/vsftpd.conf也加了local_enable=yes 以standalone模式运行. 重启服务器后, ...

随机推荐

Mongdb使用客户端

安装Robomongo图形化管理工具 Robomongo是一个基于 Shell 的跨平台开源 MongoDB 管理工具.嵌入了 JavaScript 引擎和 MongoDB mogo . 只要你会使用 ...

WAPI

中国制定的WLAN安全标准WAPI 针对WLAN安全问题,中国制定了自己的WLAN安全标准:WAPI. 与其他无线局域网安全机制(如802.11i)相比,WAPI主要的差别体现在以下几个方面: • 双 ...

Python原型模式

如果想根据现有对象复制出新的对象并对其修改,可以考虑原型模式(Prototype Pattern) class Point: __slots__ = ("x", "y&q ...

13.TCP的超时与重传

TCP提供可靠的运输层.它使用的方法之一就是确认从另一端收到的数据.但数据和确认都有可能会丢失.TCP通过在发送时设置一个定时器来解决这种问题.如果当定时器溢出时还没有收到确认,它就重传该数据. 对于 ...

python3 第五章 - 什么是变量、运算符、表达式

在读这一章时,运算符的内容比较多,不要去死记.现在记不住也没有关系,现在只要有这个印象.在后面的学习中,会慢慢加深理解,在理解中去记就容易得多了 1.变量 什么是变量?通俗的讲,就是存储在内存中可以变 ...

Python链表的实现与使用(单向链表与双向链表)

参考[易百教程]用Python实现链表及其功能 """ python链表的基本操作:节点.链表.增删改查 """ import sys cl ...

PyCharm2018 安装

PyCharm就是Python语言开发中一个很受欢迎的IDE,界面类似于visual studio,android studio,集成的功能也很多. 1>. 安装 首先要下载Pycharm这个软 ...

WebSphere静默安装教程(WAS6.1为例)

1.安装WebSphere 解压守装包: tar -zxf was_soft_64-bit.tar.gz 进入解压出的WAS目录编缉responsefile.nd.txt,将对应选项修值改成以下模样( ...

842. Split Array into Fibonacci Sequence能否把数列返回成斐波那契数列

[抄题]: Given a string S of digits, such as S = "123456579", we can split it into a Fibonacc ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值