要求

    • 必备知识

      JAVA/Struts2,JS/JQuery,HTML/CSS基础语法。

    • 开发环境

      MyEclipse 10

    • 演示地址

      演示地址

预览截图(抬抬你的鼠标就可以看到演示地址哦):

关于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<User> users;
public LinkedList<User> getUsers() {
return users;
}
public void setUsers(LinkedList<User> 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<User> getList(){
Connection connection=null;
PreparedStatement statement=null;
ResultSet rs=null;
User myUser=null;
LinkedList<User> users=new LinkedList<User>();
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;
} }

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

如以上文章或链接对你有帮助的话,别忘了在文章结尾处轻轻点击一下 “还不错”按钮或到页面右下角点击 “赞一个” 按钮哦。你也可以点击页面右边“分享”悬浮按钮哦,让更多的人阅读这篇文章。

作者:Li-Cheng
由于本人水平有限,文章在表述和代码方面如有不妥之处,欢迎批评指正。留下你的脚印,欢迎评论哦。你也可以关注我,一起学习哦!

Struts2+AJAX+JQuery 实现用户登入与注册功能。的更多相关文章

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

    要求:必备知识:JAVA/Struts2,JS/JQuery,HTML/CSS基础语法:开发环境:MyEclipse 10 关于UI部分请查看下列链接,有详细制作步骤: 利用:before和:afte ...

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

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

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

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

  4. Django,COOKIES,SESSION完成用户登入

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

  5. python编辑用户登入界面

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

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

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

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

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

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

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

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

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

随机推荐

  1. 返回结点值为e的二叉树指针

    题意为,如果二叉树某结点的值为e(假定是整型二叉树),返回这个结点的指针.初看这道题,联想到二叉树可以很简单的遍历,直接返回这个指针不就行了吗?如下图所示,假如要返回值为3的结点指针: 设计好了一个函 ...

  2. spring 事务的传播特性

    1.声明式事物中,一个类serviceA的方法test1()调用另一个类serviceB的方法test2() 要是serviceB的test2()事务配置在xml文件中为REQUIRED,又在此方法上 ...

  3. 20170905工作日记--listview优化大全

    1. 适配器设计模式 实例描述:我们国家的电器使用普通的扁平两项或三项插头,而去外国的话,使用的标准就不一样了,比如德国,使用的是两项圆头的插头,那么我们使用的手机充电器插头无法插到德国的插排中去,那 ...

  4. (贪心 or DP)Woodcutters -- Codefor 545C

    http://codeforces.com/contest/545/problem/C  Woodcutters time limit per test 1 second memory limit p ...

  5. Java案例:超市库存管理系统

    案例介绍: 模拟真实的库存管理逻辑,完成超市管理系统的日常功能实现,见下图 案例需求分析: 根据案例介绍,我们进行分析,首先需要一个功能菜单,然后输入功能序号后,调用序号对应的功能方法,实现想要的操作 ...

  6. 【python-pip】pip安装国外插件timeout解决方案

    为什么会timeout呢,你懂得(不懂???!!!) 解决方案: 使用国内豆瓣镜像安装(也有其他的镜像,自己可以搜) pip install xxx -i http://pypi.douban.com ...

  7. 《mysql必知必会》学习_第四章_20180724_欢

    P27: select prod_name from products; # select 列 from 表 # 从表products 中检索 名为 prod_name 的列 P28 多个语句一起必须 ...

  8. 二分图匹配-HK算法

    先把代码贴上,其他南京回来再补了.. #include <cstdio> #include <cstdlib> #include <cstring> #includ ...

  9. 使用PinYin4j.jar将汉字转换为拼音

    package com.Test.util; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j ...

  10. 异步多线程 ASP.NET 同步调用异步 使用Result产生死锁

    一个方法调用了async方法,要将这个方法本身设计为async. public class BlogController : Controller { public async Task<Act ...