Java Web简单的注册登陆界面(mysql+servlet+jsp)

通过一段时间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+"&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>

####当然,配置文件容易出现问题,例如在刚开始的时候项目里并没有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

百度网盘下载:链接: https://pan.baidu.com/s/1m1A8wNt7FVwwh8t7UuyAMw 提取码: 6ygn

喜欢的朋友可以点个赞,有问题欢迎留言!

到此就结束了我们的项目,欢迎大家提出宝贵的建议改进方案!

  • 103
    点赞
  • 511
    收藏
    觉得还不错? 一键收藏
  • 387
    评论
如果您想要基于JavaJSPServletMySQL和Eclipse开发Web应用程序,可以按照以下步骤进行: 1.安装Eclipse和Tomcat 首先,您需要安装Eclipse和Tomcat。您可以从官方网站下载Eclipse,然后将Tomcat作为Web服务器安装到Eclipse中。 2.创建一个动态Web项目 在Eclipse中,您可以使用“New Project”向导创建一个新的动态Web项目。您需要为项目提供名称,并选择Web服务器和运行时环境。在这里,您应该选择Tomcat作为Web服务器,并选择适当的JDK版本。 3.配置MySQL数据库 在您的Web应用程序中使用MySQL数据库之前,您需要配置MySQL数据库。请确保您已经安装了MySQL数据库,并且可以使用适当的用户名和密码连接到该数据库。 4.创建JSPServlet 您可以使用Eclipse创建JSPServlet文件。在您的Web应用程序中,您可以使用JSP文件来呈现用户界面,并使用Servlet文件处理用户请求。 5.连接到MySQL数据库 您可以使用Java中的JDBC API连接到MySQL数据库。在您的Servlet文件中,您可以编写Java代码来连接到MySQL数据库,并执行适当的SQL查询和更新。 6.测试和部署 在您完成了Web应用程序的开发和测试之后,您可以将其部署到Tomcat服务器中。您可以使用Eclipse的“Export”功能将Web应用程序导出为WAR文件,并将其部署到Tomcat服务器中。 以上是基于JavaJSPServletMySQL和Eclipse开发Web应用程序的基本步骤。当然,其中还有很多细节需要处理,例如用户认证和授权、数据验证和过滤等。但是,如果您按照上述步骤进行,您应该可以创建一个简单Web应用程序,以处理用户请求并与MySQL数据库进行交互。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值