基于MVC思想的JSP+Servlet+JavaBean的登录模块
来源:互联网 发布:软件开发测试题 编辑:程序博客网 时间:2024/04/28 23:53
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">用户实体对象</span>
User类用于封装用户实体对象,提供了用户对象的详细信息以及相应的setXXX()和getXXX()方法:
<span style="font-family:Times New Roman;">package model;public class User {private int id;// 标识private String username;// 用户名private String password;// 密码private String sex;// 性别private String tel;// 电话private String photo;// 头像private String email;// 电子邮箱public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getTel() {return tel;}public void setTel(String tel) {this.tel = tel;}public String getPhoto() {return photo;}public void setPhoto(String photo) {this.photo = photo;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}}</span><span style="font-family:宋体;"></span>
数据库连接工具类
对数据库的操作封装成一个类,在类中提供相应的方法。获取数据库连接对象和关闭数据库连接的方法:
<span style="font-family:Times New Roman;">package model;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class DataBaseUtil {public static Connection getConnection(){ Connection conn=null; try{ Class.forName("com.mysql.jdbc.Driver"); String url="jdbc:mysql://localhost:3306/registersystem"; conn=DriverManager.getConnection(url,"root","123"); }catch(Exception e){ e.printStackTrace(); System.out.println("数据库连接失败!"); } return conn;}public static void closeConnection(Connection conn){if(null!=conn){try {conn.close();} catch (SQLException e) {// TODO: handle exceptione.printStackTrace();System.out.println("数据库关闭失败!");}}}}</span>
用户数据库操作
与用户相关的数据库操作方法封装成一个类中,此类提供一系列需要的方法。例如:添加对象和验证对象。方法如下:
<span style="font-family:Times New Roman;">package model;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class UserDao {public boolean userIsExist(String username){Connection conn=DataBaseUtil.getConnection();String sql="SELECT * FROM login_user where username=?";try {PreparedStatement ps=conn.prepareStatement(sql);ps.setString(1, username);ResultSet rs=ps.executeQuery();if(!rs.next()){return true;}rs.close();//释放ResultSet对象数据资源ps.close();//释放PreparedStatement对象资源} catch (SQLException e) {e.printStackTrace();}finally{DataBaseUtil.closeConnection(conn);}return false;}public void saveUser(User user){Connection conn=DataBaseUtil.getConnection();String sql="INSERT INTO login_user(username,password,sex,tel,photo,email) values(?,?,?,?,?,?)";try {PreparedStatement ps=conn.prepareStatement(sql);ps.setString(1, user.getUsername());ps.setString(2,user.getPassword());ps.setString(3,user.getSex());ps.setString(4,user.getTel());ps.setString(5,user.getPhoto());ps.setString(6,user.getEmail());ps.executeUpdate();ps.close();//释放PreparedStatement对象资源} catch (SQLException e) {// TODO: handle exceptione.printStackTrace();System.out.println("数据库写入数据失败!");}finally{DataBaseUtil.closeConnection(conn);///关闭数据库连接,释放连接资源}}public User login(String username,String password){User user=null;Connection conn=DataBaseUtil.getConnection();String sql="SELECT * FROM login_user WHERE username=? AND password=?";try {PreparedStatement ps=conn.prepareStatement(sql);ps.setString(1, username);ps.setString(2,password);ResultSet rs=ps.executeQuery();if(rs.next()){user=new User();user.setUsername(rs.getString("username"));user.setPassword(rs.getString("password"));user.setSex(rs.getString("sex"));user.setTel(rs.getString("tel"));user.setPhoto(rs.getString("photo"));user.setEmail(rs.getString("email"));}rs.close();//释放ResultSet对象数据资源ps.close();//释放PreparedStatement对象资源} catch (SQLException e) {// TODO: handle exceptione.printStackTrace();System.out.println("用户登录验证错误!");}finally{DataBaseUtil.closeConnection(conn);}return user;}}</span>
创建Servlet对象:
RegServlet类用于实现用户注册,创建reg.jsp视图用于显示。LoginServlet类实现用户登录,处理登录请求。UserExitServlet类进行处理,用于用户退出。
<span style="font-family:Times New Roman;">package controller;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import model.User;import model.UserDao;public class RegServlet extends HttpServlet {private static final long serialVersionUID = 1L;public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{String username=request.getParameter("username");String password=request.getParameter("password");String sex=request.getParameter("sex");String photo=request.getParameter("photo");String tel=request.getParameter("tel");String email=request.getParameter("email");System.out.println("--"+username+"-"+password+"-"+sex+"-"+photo+"-"+email);UserDao userDao=new UserDao();if(null!=username && !username.isEmpty()){if(userDao.userIsExist(username)){User user=new User();user.setUsername(username);user.setPassword(password);user.setEmail(email);user.setTel(tel);user.setSex(sex);user.setPhoto(photo);userDao.saveUser(user);request.setAttribute("info", "恭喜,注册成功!<br/>");}else{request.setAttribute("info", "错误:此用户已经存在!<br/>");}}///ifrequest.getRequestDispatcher("message.jsp").forward(request, response);}}</span>
<span style="font-family:Times New Roman;">package controller;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import model.User;import model.UserDao;public class LoginServlet extends HttpServlet {private static final long serialVersionUID = 2L;public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{String username=request.getParameter("username");String password=request.getParameter("password");UserDao userDao=new UserDao();User user=userDao.login(username, password);if(null!=user){///将用户对象放入Session中request.getSession().setAttribute("user", user);request.getRequestDispatcher("message.jsp").forward(request, response);}else{request.setAttribute("info", "错误:用户名或密码错误!");request.getRequestDispatcher("message.jsp").forward(request, response);}}}</span>
<span style="font-family:Times New Roman;">package controller;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import model.User;public class UserExitServlet extends HttpServlet {private static final long serialVersionUID = 4L;///The specified HTTP method is not allowed for Get当写成doPost时候,不能正常获取//资源,未重写父类方法以至于报错,方法需要对应。备忘!public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{HttpSession session=request.getSession();User user=(User)session.getAttribute("user");if(null!=user){session.removeAttribute("user");request.setAttribute("info", user.getUsername()+"已成功退出!");}System.out.println("--LOVE--");///转发到时message.jsp页面request.getRequestDispatcher("message.jsp").forward(request, response);}}</span>
Servlet配置文件如下:
<span style="font-family:Times New Roman;"><servlet> <servlet-name>RegServlet</servlet-name> <servlet-class>controller.RegServlet</servlet-class> </servlet> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>controller.LoginServlet</servlet-class> </servlet> <servlet> <servlet-name>ExitServlet</servlet-name> <servlet-class>controller.UserExitServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>RegServlet</servlet-name> <url-pattern>/RegServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/LoginServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>ExitServlet</servlet-name> <url-pattern>/ExitServlet</url-pattern> </servlet-mapping></span>
创建数据表语句如下:
<span style="font-family:Times New Roman;">CREATE TABLE login_user( id int PRIMARY KEY AUTO_INCREMENT,username char(25),password char(25),sex char(25),tel char(25),photo char(25),email char(25))</span>完整源程序下载地址: 源程序 密码:t69d
0 0
- 基于MVC思想的JSP+Servlet+JavaBean的登录模块
- 基于JSP + servlet + javabean的MVC简单验证登录实例
- 基于jsp+servlet+javabean开发的登录模块
- 基于jsp+javabean开发的登录模块
- 基于jsp+servlet+javabean的MVC模式简单应用
- 基于JSP+JavaBean的开发实例---登录模块的实现
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
- jsp + javabean + servlet写的MVC
- 初识Jsp,JavaBean,Servlet以及一个简单mvc模式的登录界面
- jsp+javabean+servlet+Mysql实现MVC模式下的注册登录留言功能
- 对基于Servlet+JSP+JavaBean开发模式的用户登录注册的升级
- 对基于Servlet+JSP+JavaBean开发模式的用户登录注册的升级
- 对基于Servlet+JSP+JavaBean开发模式的用户登录注册的升级
- JavaWeb学习总结(基于Servlet+JSP+JavaBean开发模式的用户登录注册)
- 关于Android开机启动的小坑
- 结队练习
- ecshop当前会员等级距离下一等级差多少积分显示
- Golang-slice
- Git简介
- 基于MVC思想的JSP+Servlet+JavaBean的登录模块
- js判断IE6及以下版本浏览器
- java.io.*下的日志功能入门
- leetcode(3),Add Digits详解(python)
- 第 0004 题:任一个英文的纯文本文件,统计其中的单词出现的个数。
- 微信入坑第一弹【微信接口配置】
- 未来智能互联汽车长啥样
- 各种排序算法的分析及java实现
- 费波纳茨数列的递归及坑点