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

 

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

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;
    }
}

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

注册部分的jsp,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(以GBK为例,如果自己写的话最好用UTF-8)

下面写我们的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+"&nbsp;&nbsp;&nbsp;&nbsp;登陆时间:"+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>

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

猜你喜欢

转载自blog.csdn.net/qq_38749759/article/details/88783495
今日推荐