当前位置:   article > 正文

学习篇--(jsp+servlet+mysql) 登录界面 【前后台交互学习笔记】_jsp+servlet+mysql前后端如何交互

jsp+servlet+mysql前后端如何交互

 

经典的样例,自己手打一边,学习一下!

 

UserBean,代码如下:

  1. package com.szx.jnmc;
  2. public class User {
  3. private String username;
  4. private String userpass;
  5. private int role;
  6. private int lognum;
  7. private String regtime;
  8. public String getUsername() {
  9. return username;
  10. }
  11. public void setUsername(String username) {
  12. this.username = username;
  13. }
  14. public String getUserpass() {
  15. return userpass;
  16. }
  17. public void setUserpass(String userpass) {
  18. this.userpass = userpass;
  19. }
  20. public int getRole() {
  21. return role;
  22. }
  23. public void setRole(int role) {
  24. this.role = role;
  25. }
  26. public int getLognum() {
  27. return lognum;
  28. }
  29. public void setLognum(int lognum) {
  30. this.lognum = lognum;
  31. }
  32. public String getRegtime() {
  33. return regtime;
  34. }
  35. public void setRegtime(String regtime) {
  36. this.regtime = regtime;
  37. }
  38. }

================================================================================================

对user进行数据的封装。

下面再写一个数据库连接类DBOper 这个类具有连接数据库以及增删改(executeUpdate)查(executeQuery)的功能,以便于AddUserServlet的调用

  1. package com.szx.jnmc;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. public class DBOper {
  8. Connection conn = null;
  9. PreparedStatement ps = null;
  10. ResultSet rs = null;
  11. //打开连接
  12. public Connection getConn(String server,String dbname,String dbuser,String dbpwd){
  13. String DRIVER = "com.mysql.jdbc.Driver";
  14. String URL = "jdbc:mysql://"+server+":3306/"+dbname+"?user="+dbuser+"&password="+dbpwd+"&useUnicode=true&characterEncoding=utf8";
  15. try{
  16. Class.forName(DRIVER);
  17. conn = DriverManager.getConnection(URL);
  18. }catch(Exception e){
  19. e.printStackTrace();
  20. }
  21. return conn;
  22. }
  23. //关闭连接
  24. public void closeAll(){
  25. try{
  26. if(rs != null){
  27. rs.close();
  28. }
  29. }catch(SQLException e){
  30. e.printStackTrace();
  31. }finally{
  32. try{
  33. if(ps != null){
  34. ps.close();
  35. }
  36. }catch(SQLException e){
  37. e.printStackTrace();
  38. }finally{
  39. try{
  40. if(conn != null){
  41. conn.close();
  42. }
  43. }catch (SQLException e){
  44. e.printStackTrace();
  45. }
  46. }
  47. }
  48. }
  49. //执行sql语句,可以进行查询
  50. public ResultSet executeQuery(String preparedSql,String []param){
  51. try{
  52. ps = conn.prepareStatement(preparedSql);
  53. if(param != null){
  54. for (int i = 0; i < param.length; i++) {
  55. ps.setString(i + 1, param[i]);
  56. }
  57. }
  58. rs = ps.executeQuery();
  59. }catch(SQLException e){
  60. e.printStackTrace();
  61. }
  62. return rs;
  63. }
  64. //执行sql语句,增加,修改,删除
  65. public int executeUpdate(String preparedSql,String[]param){
  66. int num = 0;
  67. try{
  68. ps = conn.prepareStatement(preparedSql);
  69. if(ps != null){
  70. for (int i = 0; i < param.length; i++) {
  71. ps.setString(i + 1, param[i]);
  72. }
  73. }
  74. num = ps.executeUpdate();
  75. }catch(SQLException e){
  76. e.printStackTrace();
  77. }
  78. return num;
  79. }
  80. }

==========================================================================

数据库连接类写完之后,继续写一个UserDao,这个类主要功能是对用户进行增删改查 代码如下:

  1. package com.szx.jnmc;
  2. import java.sql.ResultSet;
  3. import java.sql.SQLException;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. public class UserDao extends DBOper{
  7. //获取用户列表
  8. public List<User> getUser(){
  9. List<User>userList = new ArrayList<User>();
  10. User user = new User();
  11. String sql = "SELECT * FROM tb_user";
  12. try{
  13. ResultSet rs = this.executeQuery(sql,null);
  14. while(rs.next()){
  15. user.setUsername(rs.getString("username"));
  16. user.setUserpass(rs.getString("userpass"));
  17. user.setLognum(rs.getInt("lognum"));
  18. user.setRegtime(rs.getString("regtime"));
  19. user.setRole(rs.getInt("role"));
  20. userList.add(user);
  21. }
  22. }catch(SQLException e){
  23. e.printStackTrace();
  24. }finally{
  25. this.closeAll();
  26. }
  27. return userList;
  28. }
  29. //根据用户名获取用户
  30. public User getUserByName(String name){
  31. User user = null;
  32. String sql = "SELECT * FROM tb_user WHERE username = ?";
  33. try{
  34. ResultSet rs = this.executeQuery(sql, new String[]{name});
  35. if(rs.next()){
  36. user = new User();
  37. user.setUsername(rs.getString("username"));
  38. user.setUserpass(rs.getString("userpass"));
  39. user.setRole(rs.getInt("role"));
  40. user.setLognum(rs.getInt("lognum"));
  41. user.setRegtime(rs.getString("regtime"));
  42. }
  43. }catch(SQLException e){
  44. e.printStackTrace();
  45. }finally{
  46. this.closeAll();
  47. }
  48. return user;
  49. }
  50. //修改用户信息
  51. public boolean editUser(User user){
  52. boolean r = false;
  53. String sql = "UPDATE tb_user SET userpass = ?,role = ?,regtime = ?,lognum = ? WHERE username = ?";
  54. try{
  55. int num = this.executeUpdate(sql, new String[]{user.getUserpass(),""+user.getRole(),""+user.getLognum(),user.getRegtime(),user.getUsername()});
  56. if(num > 0){
  57. r = true;
  58. }
  59. }catch(Exception e){
  60. e.printStackTrace();
  61. }finally{
  62. this.closeAll();
  63. }
  64. return r;
  65. }
  66. //添加用户
  67. public boolean addUser(User user){
  68. boolean r = false;
  69. String sql = "INSERT INTO tb_user(username,userpass,role,regtime)VALUES(?,?,?,?) ";
  70. try{
  71. int num = this.executeUpdate(sql,new String[]{user.getUsername(),user.getUserpass(),""+user.getRole(),user.getRegtime()});
  72. if(num > 0){
  73. r = true;
  74. }
  75. }catch(Exception e){
  76. e.printStackTrace();
  77. }finally{
  78. this.closeAll();
  79. }
  80. return r;
  81. }
  82. //删除指定用户
  83. public boolean delUser(String name){
  84. boolean r = false;
  85. String sql = "DELETE FROM tb_user WHERE username = ?";
  86. try{
  87. int num = this.executeUpdate(sql,new String[]{name});
  88. if(num > 0){
  89. r = true;
  90. }
  91. }catch(Exception e){
  92. e.printStackTrace();
  93. }finally{
  94. this.closeAll();
  95. }
  96. return r;
  97. }
  98. }

===============================================================================================

注册部分的jsp,addUser.jsp用来接收用户的输入。抛开各种样式,直接用最原始的样式呈现吧,代码如下:

  1. <%@ page language="java" contentType="text/html; charset=GBK"
  2. pageEncoding="GBK"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=GBK">
  7. <title>添加用户页面</title>
  8. </head>
  9. <body>
  10. <form action = "AddUserServlet" method = "POST">
  11. 用户名:<input type = "text" name = "username">
  12. 密码:<input type = "password" name = "userpass">
  13. <input type = "submit" value = "注册">
  14. <input type = "reset" value = "重置">
  15. </form>
  16. </body>
  17. </html>

===============================================

注意页面的字符编码设置统一为GBK(以GBK为例,如果自己写的话最好用UTF-8)

下面写我们的AddUserServlet,不多说,直接贴代码:

  1. package com.szx.jnmc;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import java.text.SimpleDateFormat;
  5. import java.util.Date;
  6. import javax.servlet.ServletContext;
  7. import javax.servlet.ServletException;
  8. import javax.servlet.annotation.WebServlet;
  9. import javax.servlet.http.HttpServlet;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12. /**
  13. * Servlet implementation class AddUserServlet
  14. */
  15. @WebServlet("/AddUserServlet")
  16. public class AddUserServlet extends HttpServlet {
  17. private static final long serialVersionUID = 1L;
  18. /**
  19. * @see HttpServlet#HttpServlet()
  20. */
  21. public AddUserServlet() {
  22. super();
  23. // TODO Auto-generated constructor stub
  24. }
  25. /**
  26. * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  27. */
  28. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  29. // TODO Auto-generated method stub
  30. doPost(request,response);
  31. }
  32. /**
  33. * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  34. */
  35. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  36. // TODO Auto-generated method stub
  37. request.setCharacterEncoding("GBK");
  38. response.setContentType("text/html;charset = GBK");
  39. String username = request.getParameter("username");
  40. String userpass = request.getParameter("userpass");
  41. //String role = request.getParameter("role");
  42. Date curTime = new Date();
  43. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  44. String regtime = sdf.format(curTime);
  45. PrintWriter out = response.getWriter();
  46. ServletContext ctx = this.getServletContext();
  47. String server = ctx.getInitParameter("server");
  48. String dbname = ctx.getInitParameter("dbname");
  49. String dbuser = ctx.getInitParameter("dbuser");
  50. String dbpwd = ctx.getInitParameter("dbpwd");
  51. User user = new User();
  52. user.setUsername(username);
  53. user.setUserpass(userpass);
  54. user.setRegtime(regtime);
  55. //user.setRole(Integer.parseInt(role));
  56. UserDao dao = new UserDao();
  57. dao.getConn(server, dbname, dbuser, dbpwd);
  58. if(dao.addUser(user)){
  59. out.print("注册成功!");
  60. }
  61. else{
  62. out.print("注册失败!");
  63. }
  64. }
  65. }

===============================================================================================

接下来我们写登陆部分,login.jsp代码如下:

  1. <%@ page language="java" contentType="text/html; charset=GBK"
  2. pageEncoding="GBK"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=GBK">
  7. <title>登陆页面</title>
  8. </head>
  9. <body>
  10. <form method = "POST" action = "LoginServlet">
  11. 用户名:<input type = "text" name = "username">
  12. 密码:<input type = "password" name = "userpass">
  13. <input type = "submit" value = "登陆">
  14. <input type = "reset" value = "重置">
  15. </form>
  16. </body>
  17. </html>

================================================================================================

LoginServlet代码如下:

  1. package com.szx.jnmc;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.text.SimpleDateFormat;
  7. import java.util.Date;
  8. import javax.servlet.RequestDispatcher;
  9. import javax.servlet.ServletContext;
  10. import javax.servlet.ServletException;
  11. import javax.servlet.annotation.WebServlet;
  12. import javax.servlet.http.Cookie;
  13. import javax.servlet.http.HttpServlet;
  14. import javax.servlet.http.HttpServletRequest;
  15. import javax.servlet.http.HttpServletResponse;
  16. import javax.servlet.http.HttpSession;
  17. /**
  18. * Servlet implementation class LoginServlet
  19. */
  20. @WebServlet("/LoginServlet")
  21. public class LoginServlet extends HttpServlet {
  22. private static final long serialVersionUID = 1L;
  23. /**
  24. * @see HttpServlet#HttpServlet()
  25. */
  26. public LoginServlet() {
  27. super();
  28. // TODO Auto-generated constructor stub
  29. }
  30. /**
  31. * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  32. */
  33. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  34. // TODO Auto-generated method stub
  35. doPost(request,response);
  36. }
  37. /**
  38. * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  39. */
  40. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  41. // TODO Auto-generated method stub
  42. request.setCharacterEncoding("GBK");
  43. response.setContentType("text/html;charset = GBK");
  44. PrintWriter out = response.getWriter();
  45. String username = request.getParameter("username");
  46. String userpass = request.getParameter("userpass");
  47. ServletContext ctx = request.getServletContext();
  48. String server = ctx.getInitParameter("server");
  49. String dbname = ctx.getInitParameter("dbname");
  50. String dbuser = ctx.getInitParameter("dbuser");
  51. String dbpwd = ctx.getInitParameter("dbpwd");
  52. DBOper db = new DBOper();
  53. db.getConn(server, dbname, dbuser, dbpwd);
  54. String sql = "SELECT username,userpass,role FROM tb_user WHERE username = ? AND userpass = ?";
  55. ResultSet rs = db.executeQuery(sql,new String[]{username,userpass});
  56. try {
  57. if(rs != null && rs.next()){
  58. HttpSession session = request.getSession();
  59. session.setAttribute("username",username);
  60. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  61. String logtime = sdf.format(new Date());
  62. session.setAttribute("logtime",logtime);
  63. Cookie cookie = new Cookie("username",username);
  64. cookie.setMaxAge(60*60*24*30);
  65. response.addCookie(cookie);
  66. RequestDispatcher dispatcher = request.getRequestDispatcher("MainServlet");
  67. dispatcher.forward(request,response);
  68. }else{
  69. out.print("登录失败");
  70. out.print("<br><a href = 'login.jsp'>重新登陆</a>");
  71. }
  72. } catch (SQLException e) {
  73. // TODO Auto-generated catch block
  74. e.printStackTrace();
  75. }
  76. }
  77. public void init()throws ServletException {
  78. }
  79. }

==========================================================================================

LoginServlet里的MianServlet用来显示登陆成功的信息,登陆失败则跳转到login.jsp重新登陆,MainServlet的代码如下:

  1. package com.szx.jnmc;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.annotation.WebServlet;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import javax.servlet.http.HttpSession;
  10. /**
  11. * Servlet implementation class MainServlet
  12. */
  13. @WebServlet("/MainServlet")
  14. public class MainServlet extends HttpServlet {
  15. private static final long serialVersionUID = 1L;
  16. /**
  17. * @see HttpServlet#HttpServlet()
  18. */
  19. public MainServlet() {
  20. super();
  21. // TODO Auto-generated constructor stub
  22. }
  23. /**
  24. * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  25. */
  26. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  27. // TODO Auto-generated method stub
  28. doPost(request,response);
  29. }
  30. /**
  31. * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  32. */
  33. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  34. // TODO Auto-generated method stub
  35. request.setCharacterEncoding("GBK");
  36. response.setContentType("text/html;charaset = GBK");
  37. PrintWriter out = response.getWriter();
  38. HttpSession session = request.getSession();
  39. String username = (String)session.getAttribute("username");
  40. String logtime = (String)session.getAttribute("logtime");
  41. out.println("登录名:"+username+"&nbsp;&nbsp;&nbsp;&nbsp;登陆时间:"+logtime);
  42. out.println("欢迎"+username);
  43. }
  44. }

===============================================================================================

到此我们还有最重要的一步,就是在web.xml里配置我们的项目,web.xml代码如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <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">
  3. <display-name>20170512</display-name>
  4. <welcome-file-list>
  5. <welcome-file>index.html</welcome-file>
  6. <welcome-file>index.htm</welcome-file>
  7. <welcome-file>index.jsp</welcome-file>
  8. <welcome-file>default.html</welcome-file>
  9. <welcome-file>default.htm</welcome-file>
  10. <welcome-file>default.jsp</welcome-file>
  11. </welcome-file-list>
  12. <context-param>
  13. <param-name>server</param-name>
  14. <param-value>localhost</param-value>
  15. </context-param>
  16. <context-param>
  17. <param-name>dbname</param-name>
  18. <param-value>A20170512</param-value>
  19. </context-param>
  20. <context-param>
  21. <param-name>dbuser</param-name>
  22. <param-value>root</param-value>
  23. </context-param>
  24. <context-param>
  25. <param-name>dbpwd</param-name>
  26. <param-value>123456</param-value>
  27. </context-param>
  28. <servlet>
  29. <display-name>AddUserServlet</display-name>
  30. <servlet-name>AddUSerServlet</servlet-name>
  31. <servlet-class>com.szx.jnmc.AddUserServlet</servlet-class>
  32. </servlet>
  33. <servlet>
  34. <display-name>LoginServlet</display-name>
  35. <servlet-name>LoginServlet</servlet-name>
  36. <servlet-class>com.szx.jnmc.LoginServlet</servlet-class>
  37. </servlet>
  38. </web-app>

转载于:https://blog.csdn.net/ITcreater000/article/details/71759744

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/453439
推荐阅读
相关标签
  

闽ICP备14008679号