Java Web简单的注册登陆界面(mysql+servlet+jsp)
2017-05-12 20:18
761 查看
通过一段时间Java Web的学习,写一个简单的注册登陆界面来做个总结,也方便与大家分享交流。
首先我们先写一个UserBean,代码如下:
package com.szx.jnmc; public class User { private String username; private String userpass; private int role; private int lognum; private String regtime; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getUserpass() { return userpass; } public void setUserpass(String userpass) { this.userpass = userpass; } public int getRole() { return role; } public void setRole(int role) { this.role = role; } public int getLognum() { return lognum; } public void setLognum(int lognum) { this.lognum = lognum; } public String getRegtime() { return regtime; } public void setRegtime(String regtime) { this.regtime = regtime; } }
这段代码用来对user进行数据的封装。
下面再写一个数据库连接类DBOper 这个类具有连接数据库以及增删改(executeUpdate)查(executeQuery)的功能,以便于AddUserServlet的调用
package com.szx.jnmc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class DBOper { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; //打开连接 public Connection getConn(String server,String dbname,String dbuser,String dbpwd){ String DRIVER = "com.mysql.jdbc.Driver"; String URL = "jdbc:mysql://"+server+":3306/"+dbname+"?user="+dbuser+"&password="+dbpwd+"&useUnicode=true&characterEncoding=utf8"; try{ Class.forName(DRIVER); conn = DriverManager.getConnection(URL); }catch(Exception e){ e.printStackTrace(); } return conn; } //关闭连接 public void closeAll(){ try{ if(rs != null){ rs.close(); } }catch(SQLException e){ e.printStackTrace(); }finally{ try{ if(ps != null){ ps.close(); } }catch(SQLException e){ e.printStackTrace(); }finally{ try{ if(conn != null){ conn.close(); } }catch (SQLException e){ e.printStackTrace(); } } } } //执行sql语句,可以进行查询 public ResultSet executeQuery(String preparedSql,String []param){ try{ ps = conn.prepareStatement(preparedSql); if(param != null){ for (int i = 0; i < param.length; i++) { ps.setString(i + 1, param[i]); } } rs = ps.executeQuery(); }catch(SQLException e){ e.printStackTrace(); } return rs; } //执行sql语句,增加,修改,删除 public int executeUpdate(String preparedSql,String[]param){ int num = 0; try{ ps = conn.prepareStatement(preparedSql); if(ps != null){ for (int i = 0; i < param.length; i++) { ps.setString(i + 1, param[i]); } } num = ps.executeUpdate(); }catch(SQLException e){ e.printStackTrace(); } return num; } }
数据库连接类写完之后,继续写一个UserDao,这个类主要功能是对用户进行增删改查 ,虽然是一个简单的登录界面,但是考虑到后面的开发,所以就直接把删改查的功能也一并实现了,代码如下:
package com.szx.jnmc; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class UserDao extends DBOper{ //获取用户列表 public List<User> getUser(){ List<User>userList = new ArrayList<User>(); User user = new User(); String sql = "SELECT * FROM tb_user"; try{ ResultSet rs = this.executeQuery(sql,null); while(rs.next()){ user.setUsername(rs.getString("username")); user.setUserpass(rs.getString("userpass")); user.setLognum(rs.getInt("lognum")); user.setRegtime(rs.getString("regtime")); user.setRole(rs.getInt("role")); userList.add(user); } }catch(SQLException e){ e.printStackTrace(); }finally{ this.closeAll(); } return userList; } //根据用户名获取用户 public User getUserByName(String name){ User user = null; String sql = "SELECT * FROM tb_user WHERE username = ?"; try{ ResultSet rs = this.executeQuery(sql, new String[]{name}); if(rs.next()){ user = new User(); user.setUsername(rs.getString("username")); user.setUserpass(rs.getString("userpass")); user.setRole(rs.getInt("role")); user.setLognum(rs.getInt("lognum")); user.setRegtime(rs.getString("regtime")); } }catch(SQLException e){ e.printStackTrace(); }finally{ this.closeAll(); } return user; } //修改用户信息 public boolean editUser(User user){ boolean r = false; String sql = "UPDATE tb_user SET userpass = ?,role = ?,regtime = ?,lognum = ? WHERE username = ?"; try{ int num = this.executeUpdate(sql, new String[]{user.getUserpass(),""+user.getRole(),""+user.getLognum(),user.getRegtime(),user.getUsername()}); if(num > 0){ r = true; } }catch(Exception e){ e.printStackTrace(); }finally{ this.closeAll(); } return r; } //添加用户 public boolean addUser(User user){ boolean r = false; String sql = "INSERT INTO tb_user(username,userpass,role,regtime)VALUES(?,?,?,?) "; try{ int num = this.executeUpdate(sql,new String[]{user.getUsername(),user.getUserpass(),""+user.getRole(),user.getRegtime()}); if(num > 0){ r = true; } }catch(Exception e){ e.printStackTrace(); }finally{ this.closeAll(); } return r; } //删除指定用户 public boolean delUser(String name){ boolean r = false; String sql = "DELETE FROM tb_user WHERE username = ?"; try{ int num = this.executeUpdate(sql,new String[]{name}); if(num > 0){ r = true; } }catch(Exception e){ e.printStackTrace(); }finally{ this.closeAll(); } return r; } }
我们先写注册部分,addUser.jsp用来接收用户的输入。抛开各种样式,直接用最原始的样式呈现吧,代码如下:
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%> <!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=GBK"> <title>添加用户页面</title> </head> <body> <form action = "AddUserServlet" method = "POST"> 用户名:<input type = "text" name = "username"> 密码:<input type = "password" name = "userpass"> <input type = "submit" value = "注册"> <input type = "reset" value = "重置"> </form> </body> </html>
效果如下图,太丑了,仅作分享交流,不喜勿喷
这里有一个地方需要注意,就是页面的字符编码设置统一为GBK
下面写我们的AddUserServlet,不多说,直接贴代码:
package com.szx.jnmc; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class AddUserServlet */ @WebServlet("/AddUserServlet") public class AddUserServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public AddUserServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doPost(request,response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setCharacterEncoding("GBK"); response.setContentType("text/html;charset = GBK"); String username = request.getParameter("username"); String userpass = request.getParameter("userpass"); //String role = request.getParameter("role"); Date curTime = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String regtime = sdf.format(curTime); PrintWriter out = response.getWriter(); ServletContext ctx = this.getServletContext(); String server = ctx.getInitParameter("server"); String dbname = ctx.getInitParameter("dbname"); String dbuser = ctx.getInitParameter("dbuser"); String dbpwd = ctx.getInitParameter("dbpwd"); User user = new User(); user.setUsername(username); user.setUserpass(userpass); user.setRegtime(regtime); //user.setRole(Integer.parseInt(role)); UserDao dao = new UserDao(); dao.getConn(server, dbname, dbuser, dbpwd); if(dao.addUser(user)){ out.print("注册成功!"); } else{ out.print("注册失败!"); } } }
接下来我们写登陆部分,login.jsp代码如下:
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%> <!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=GBK"> <title>登陆页面</title> </head> <body> <form method = "POST" action = "LoginServlet"> 用户名:<input type = "text" name = "username"> 密码:<input type = "password" name = "userpass"> <input type = "submit" value = "登陆"> <input type = "reset" value = "重置"> </form> </body> </html>
登录页面如下:
LoginServlet代码如下:
package com.szx.jnmc; import java.io.IOException; import java.io.PrintWriter; import java.sql.ResultSet; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; /** * Servlet implementation class LoginServlet */ @WebServlet("/LoginServlet") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public LoginServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doPost(request,response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setCharacterEncoding("GBK"); response.setContentType("text/html;charset = GBK"); PrintWriter out = response.getWriter(); String username = request.getParameter("username"); String userpass = request.getParameter("userpass"); ServletContext ctx = request.getServletContext(); String server = ctx.getInitParameter("server"); String dbname = ctx.getInitParameter("dbname"); String dbuser = ctx.getInitParameter("dbuser"); String dbpwd = ctx.getInitParameter("dbpwd"); DBOper db = new DBOper(); db.getConn(server, dbname, dbuser, dbpwd); String sql = "SELECT username,userpass,role FROM tb_user WHERE username = ? AND userpass = ?"; ResultSet rs = db.executeQuery(sql,new String[]{username,userpass}); try { if(rs != null && rs.next()){ HttpSession session = request.getSession(); session.setAttribute("username",username); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String logtime = sdf.format(new Date()); session.setAttribute("logtime",logtime); Cookie cookie = new Cookie("username",username); cookie.setMaxAge(60*60*24*30); response.addCookie(cookie); RequestDispatcher dispatcher = request.getRequestDispatcher("MainServlet"); dispatcher.forward(request,response); }else{ out.print("登录失败"); out.print("<br><a href = 'login.jsp'>重新登陆</a>"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void init()throws ServletException { } }
LoginServlet里的MianServlet用来显示登陆成功的信息,登陆失败则跳转到login.jsp重新登陆,MainServlet的代码如下:
package com.szx.jnmc; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; /** * Servlet implementation class MainServlet */ @WebServlet("/MainServlet") public class MainServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public MainServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doPost(request,response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setCharacterEncoding("GBK"); response.setContentType("text/html;charaset = GBK"); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(); String username = (String)session.getAttribute("username"); String logtime = (String)session.getAttribute("logtime"); out.println("登录名:"+username+" 登陆时间:"+logtime); out.println("欢迎"+username); } }
到此我们还有最重要的一步,就是在web.xml里配置我们的项目,web.xml代码如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>20170512</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <context-param> <param-name>server</param-name> <param-value>localhost</param-value> </context-param> <context-param> <param-name>dbname</param-name> <param-value>A20170512</param-value> </context-param> <context-param> <param-name>dbuser</param-name> <param-value>root</param-value> </context-param> <context-param> <param-name>dbpwd</param-name> <param-value>123456</param-value> </context-param> <servlet> <display-name>AddUserServlet</display-name> <servlet-name>AddUSerServlet</servlet-name> <servlet-class>com.szx.jnmc.AddUserServlet</servlet-class> </servlet> <servlet> <display-name>LoginServlet</display-name> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.szx.jnmc.LoginServlet</servlet-class> </servlet> </web-app>
当然,配置文件容易出现问题,例如在刚开始的时候项目里并没有web.xml,所以我们不妨在创建项目的时候就直接带上,步骤如下:
1.新建项目2.next
3.勾选√
这时候,项目的/0512/WebContent/WEB-INF/目录下就会出现web.xml文件
还有一步就是要把jdbc连接数据库(mysql)的jar包复制到/20170512/WebContent/WEB-INF/lib目录下,这样才能连接保证连接到数据库
到此有必要贴出项目的目录结构:
数据库需要自己创建,如图所示:
项目的下载地址:
CSDN下载中心:http://download.csdn.net/detail/itcreater000/9841194如果csdn里下载不到,可留言!
到此就结束了我们的项目,欢迎大家提出宝贵的建议改进方案!
相关文章推荐
- 采用Servlet+JDBC+MySQL+Jsp完成一个登陆注册界面
- 基于jsp和servlet的简单mvc登陆注册
- 最简单的登陆界面jsp+servlet
- JSP+Servlet+Tomcat+Mysql实现注册、登陆、修改、添加、查看、分页实例之----返回操作
- JSP+Servlet+Tomcat+Mysql实现注册、登陆、修改、添加、查看、分页实例之----密码修改
- JavaEE入门手把手教你做简单登陆界面(1)原始的jsp+servlet
- JSP+Servlet+Tomcat+Mysql实现注册、登陆、修改、添加、查看、分页实例之----分页操作
- JSP+Servlet+Tomcat+Mysql实现注册、登陆、修改、添加、查看、分页实例之----添加
- javaServlet+tomcat+mysql简单登陆注册web测试环境搭建
- servlet+jsp+MySQL实现简单的页面登陆
- JSP+Servlet+Tomcat+Mysql实现注册、登陆、修改、添加、查看、分页实例之----用户注册
- JSP+Servlet+Tomcat+Mysql实现注册、登陆、修改、添加、查看、分页实例之----查询列表
- JSP+Servlet+Tomcat+Mysql实现注册、登陆、修改、添加、查看、分页实例之----用户登陆
- 基于Servlet、JSP、JDBC、MySQL的一个简单的用户注册模块(附完整源码)
- 基于Servlet、JSP、JDBC、MySQL的一个简单的用户注册模块(附完整源码)
- JSP+Servlet+Tomcat+Mysql实现注册、登陆、修改、添加、查看、分页实例之----删除
- JSP+Servlet+Tomcat+Mysql实现用户注册、登陆、修改、添加、查看详情、分页实例之---说明
- JSP+Servlet+Tomcat+Mysql实现用户注册、登陆、修改、添加、查看详情、分页实例之---框架
- jsp+servlet+ajax+oracle数据库-实现简单的登陆、注册、找回密码功能(与Oralce数据库连接)
- 用Jsp+Servlet+JavaBean写的注册登陆界面,解决中文乱码