您的位置:首页 > 编程语言 > Java开发

JSP+Servlet+JavaBean模式 -- 简易登录注册模型

2018-04-08 09:07 621 查看
模式分析:



对于Jsp来说:Model层:实现系统的业务逻辑,即javaBean部分View层:负责与用户交互,即在界面上展示数据对象给用户,即html,jspControl层:Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作,当然就是Servlet的职责了。

Model层代码:
User.Javapackage JavaBean;

public class User {
private String UserName;//User表用户名
private String Password;//User表用户密码

public void setPassword(String password) {
Password = password;
}

public void setUserName(String userName) {

UserName = userName;
}

public String getUserName() {

return UserName;
}

public String getPassword() {

return Password;
}
}UserSQL.Javapackage JavaBean;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class UserSQL {
public static final String DRIVER = "com.mysql.jdbc.Driver";
//数据库驱动(需将下载好后的jar包放入../web/WEB-INF/lib文件中)
public static final String DBURL = "jdbc:mysql://127.0.0.1/DataBaseName?useUnicode=true&characterEncoding=UTF-8&useSSL=false";
public static final String DBUser = "username";
public static final String DBPassword = "password";
private Connection conn = null;
//用于数据库连接
private PreparedStatement pStat = null;
//用于执行SQL语句
private ResultSet resultSet = null;
//用于获取SQL语句的执行结果

public UserSQL(){//对数据库所需操作初始化
try {
Class.forName(DRIVER);
//加载JDBC驱动程序
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

public Connection getConn(){
try{
return DriverManager.getConnection(DBURL, DBUser, DBPassword);
//连接数据库,并将该连接返回
}catch (Exception e){
e.printStackTrace();
return null;
}
}

public void close(){
try {
if(resultSet != null)
resultSet.close();
if(pStat != null)
pStat.close();
if(conn != null)
conn.close();
//关闭数据库的连接
}catch (Exception e){
e.printStackTrace();
}
}

public boolean isUserNameExists(String username){
conn = getConn();
//获取数据库的连接
if(conn != null){
try {
pStat = conn.prepareStatement("select * from User where User=?");
pStat.setString(1, username);
//执行SQL语句
resultSet = pStat.executeQuery();
//获取SQL语句执行结果
if(resultSet.next())
return true;
//如果结果集中有元素,则说明该UserName存在
return false;
}catch (Exception e) {
e.printStackTrace();
return false;
}finally {
close();
}
}
return false;
}

public boolean findUser(String username, String password){
conn = getConn();
//获取数据库的连接
if(conn != null){
try {
pStat = conn.prepareStatement("select * from User where User=? and Password=?");
pStat.setString(1, username);
pStat.setString(2, password);
//执行SQL语句
resultSet = pStat.executeQuery();
//获取SQL语句执行结果
if(resultSet.next())
return true;
//如果结果集中有元素,则说明该UserName存在
return false;
}catch (Exception e) {
e.printStackTrace();
return false;
}finally {
close();
}
}
return false;
}

public boolean addUser(User user){
conn = getConn();
//获取数据库的连接
if(conn != null){
try {
pStat = conn.prepareStatement("insert into User values(?, ?)");
pStat.setString(1, user.getUserName());
pStat.setString(2, user.getPassword());
//执行SQL语句
int cnt = pStat.executeUpdate();
//将更新结果commit
if(cnt > 0)
return true;
//成功commit,返回true
return false;
}catch (Exception e) {
e.printStackTrace();
return false;
}finally {
close();
}
}
return false;
}
}

Controler层代码:
Login.javapackage Servlet;

import JavaBean.UserSQL;

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 java.io.IOException;

@WebServlet("/login")//此行代码后,可不用在web.xml中手动部署
public class Login extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
//获取表单中name=username的值
String password = req.getParameter("password");
//获取表单中name=password的值
UserSQL userSQL = new UserSQL();
//创建userSQL对象
boolean flag = userSQL.findUser(username, password);
//判断对应的用户名和密码是否正确
if(flag){
req.getSession().setAttribute("username", username);
resp.sendRedirect("JSP/Welcome.jsp");
//若正确,则设置相应session,并跳转到欢迎界面
}else{
req.getSession().setAttribute("err", "用户名或密码错误");
resp.sendRedirect("JSP/Login.jsp");
//若不正确,则设置相应错误信息,并返回登录界面
}
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
Register.java
package Servlet;

import JavaBean.User;
import JavaBean.UserSQL;
import com.sun.deploy.net.HttpResponse;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
impor
4000
t java.io.IOException;

@WebServlet("/register")//此行代码后,可不用在web.xml中手动部署
public class Register extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
//获取表单中name=username的值
String password = req.getParameter("password");
//获取表单中name=password的值
User user = new User();
//创建User对象
user.setPassword(password);
user.setUserName(username);
//设置User对象属性
UserSQL userSQL = new UserSQL();
//创建userSQL对象
if(userSQL.isUserNameExists(username)){//判断数据库中用户名是否存在
req.getSession().setAttribute("err", "用户名已存在");
resp.sendRedirect("JSP/Register.jsp");
//若该用户已存在,设置相应错误信息,并返回Register页面
}
else {
boolean flag = userSQL.addUser(user);
//数据库中该用户不存在;在数据库中添加该用户,判断是否成功添加
if (flag) {
req.getSession().setAttribute("username", username);
resp.sendRedirect("JSP/Welcome.jsp");
//若成功添加,设置相应session,并跳转到欢迎页面
} else {
req.getSession().setAttribute("err", "注册失败,请重试");
resp.sendRedirect("JSP/Register.jsp");
//若添加失败,设置相应错误信息,并返回注册界面
}
}
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
View层代码
Register.jsp<%--
Created by IntelliJ IDEA.
User: vina
Date: 18-4-7
Time: 下午3:57
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>register</title>
</head>
<body>
<%
String errMsg = (String)session.getAttribute("err");
if(errMsg != null){
out.println("<div style=\"color:red;\">" + errMsg + "</div>");
session.removeAttribute("err");
}
%>
<form action="/register">
用户名:<input type="text" name="username">
密码:<input type="password" name="password">
<br>
<input type="submit" value="注册">
<input type="reset" value="重填">
</form>
</body>
</html>
Login.jsp
<%--
Created by IntelliJ IDEA.
User: vina
Date: 18-4-7
Time: 下午3:57
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Login</title>
</head>
<body>
<%
String errMsg = (String)session.getAttribute("err");
if(errMsg != null){
out.println("<div style=\"color:red;\">" + errMsg + "</div>");
session.removeAttribute("err");
}
%>
<form action="/login">
用户名:<input type="text" name="username">
密码:<input type="password" name="password">
<br>
<input type="submit" value="登录">
<input type="reset" value="重填">
</form>
<a href="Register.jsp">注册</a>
</body>
</html>
Welcome.jsp
<%--
Created by IntelliJ IDEA.
User: vina
Date: 18-4-7
Time: 下午3:57
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>welcome</title>
</head>
<body>
<%
String username = (String)session.getAttribute("username");
if(username != null && !username.isEmpty())
out.print("你已登录,欢迎");
else {
out.print("你还没有登录,3秒后自动跳往登录页面");
response.setHeader("refresh", "3;url=Login.jsp");
}
%>
</body>
</html>

以上就是本简易登录模型的全部代码.
记录在此,加深自己这几天对JSP,Servlet,JavaBean和JDBC学习的理解.希望也能帮助到你.共勉!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JSP Servlet JavaBean MySQL Java
相关文章推荐