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
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
以上就是本简易登录模型的全部代码.
记录在此,加深自己这几天对JSP,Servlet,JavaBean和JDBC学习的理解.希望也能帮助到你.共勉!
对于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学习的理解.希望也能帮助到你.共勉!
相关文章推荐
- 对基于Servlet+JSP+JavaBean开发模式的用户登录注册的升级
- J2EE初级学习项目——JSP+Servlet+JavaBean开发模式+Filter+(Listener)+Jdbc的用户登录注册系统
- 深入分析JavaWeb 19 -- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
- 对基于Servlet+JSP+JavaBean开发模式的用户登录注册的升级
- javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
- javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
- JavaWeb总结二十二、基于Servlet+JSP+JavaBean开发模式的用户登录注册
- JavaWeb学习总结(基于Servlet+JSP+JavaBean开发模式的用户登录注册)
- javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
- 【转载】 javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册 - 孤傲苍狼 - 博 http://www.cnblogs.com/xdp-gacl/
- javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
- javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
- JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
- JavaWeb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
- 深入分析JavaWeb Item19 -- 基于Servlet+JSP+JavaBean开发模式的用户登录注册