1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > jsp+servlet实现最基本的注册登陆功能

jsp+servlet实现最基本的注册登陆功能

时间:2021-06-10 05:01:53

相关推荐

jsp+servlet实现最基本的注册登陆功能

源码和数据库下载地址:/detail/biexiansheng/9759722

1:首先需要设计好数据库和数据表,这里简单截图说明我创建的字段和类型。

2:进入正题,开始开发前台和后台代码。首先创建一个动态web工程,然后先创建一个实体类。

1 package com.bie.po; 2 /** 3 * @author BieHongLi 4 * @version 创建时间:2月21日 上午9:59:03 5 * 用户的实体类 6 */ 7 public class User { 8 9private Integer id;10private String name;11private String password;12private String email;13private String phone;14public Integer getId() {15 return id;16}17public void setId(Integer id) {18 this.id = id;19}20public String getName() {21 return name;22}23public void setName(String name) {24 this.name = name;25}26public String getPassword() {27 return password;28}29public void setPassword(String password) {30 this.password = password;31}32public String getEmail() {33 return email;34}35public void setEmail(String email) {36 this.email = email;37}38public String getPhone() {39 return phone;40}41public void setPhone(String phone) {42 this.phone = phone;43}4445//重写toString 方法46@Override47public String toString() {48 return "User [id=" + id + ", name=" + name + ", password=" + password + ", email=" + email + ", phone=" + phone49 + "]";50}515253 }

3:然后创建login.jsp登陆页面

1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>用户登陆页面</title> 8 <style type="text/css"> 9 h1{text-align:left;}10 h4{text-align:left;color:red;}11 body{background:url(images/1.png)}12 a{text-decoration:none;font-size:20px;color:black;}13 a:hover{text-decoration:underline;font-size:24px;color:red;}14 </style>15 16 </head>17 <body>18 <form action="user/userlogin" method="post">19<h1>用户登陆页面</h1>20<h4>装饰中......</h4> 21<hr/>22<table align="left">23 <tr>24 <td>账号:</td>25 <td><input type="text" name="name" id="name"></td>26 </tr>27 <tr>28 <td>密码:</td>29 <td><input type="password" name="password" id="password"></td>30 </tr>31 <tr>32 <td colspan="1">33 </td>34 <td>35 <input type="submit" value="登陆"/>36 <input type="reset" value="重置"/>37 <a href="register.jsp" target="_blank">注册</a>38 </td>39 </tr>40</table>41 </form>42 </body>43 </html>

4:再创建注册页面register.jsp

1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>注册的页面</title> 8 <style type="text/css"> 9 h1{text-align:center;}10 h4{text-align:right;color:red;}11 body{background:url(images/2.png)}12 </style>13 14 <script type="text/javascript" src="js/jquery.min.js"></script>15 <script type="text/javascript">16$(document).ready(function(){17 //alert("测试jQuery是否能用");18 $("#form1").submit(function(){19 var name=$("#name").val();//获取提交的值20 if(name.length==0){//进行判断,如果获取的值为0那么提示账号不能为空21 //alert("aa");//测试使用22 $("#nameError").html("账号不能为空");23 return false;24 }25 26 //密码进行验证不能为空27 var password=$("#password").val();//获取提交的密码的值28 if(password.length==0){29 $("#passwordError").html("密码不能为空");30 return false;31 }32 33 //确认密码进行验证34 var relpassword=$("#relpassword").val();//获取提交的确认密码的值35 if(relpassword.length==0){36 $("#relpasswordError").html("确认密码不能为空哦");37 return false;38 }39 40 if(password!=relpassword){41 $("#relpasswordError").html("确认密码输入不正确,请重新输入");42 return false;43 }44 });4546});47 </script>48 </head>49 <body>50 <form action="user/userregister" method="post" id="form1">51<h1>用户注册页面</h1>52<h4>装饰中......</h4> 53<hr/>54<table align="center">55 <tr>56 <td>账&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;号:</td>57 <td>58 <input type="text" name="name" id="name"/>59 <div id="nameError" style="display:inline;color:red;"></div>60 </td>61 </tr>62 <tr>63 <td>密&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;码:</td>64 <td>65 <input type="password" name="password" id="password">66 <div id="passwordError" style="display:inline;color:red;"></div>67 </td>68 </tr>69 <tr>70 <td>确认密码:</td>71 <td>72 <input type="password" name="relpassword" id="relpassword">73 <div id="relpasswordError" style="display:inline;color:red;"></div>74 </td>75 </tr>76 <tr>77 <td>电话号码:</td>78 <td><input type="text" name="phone" id="phone"></td>79 </tr>80 <tr>81 <td>电子邮件:</td>82 <td><input type="text" name="email" id="email"></td>83 </tr>84 <tr>85 <td colspan="1">86 </td>87 <td>88 <input type="submit" value="注册"/>89 <input type="reset" value="重置"/>90 <a href="login.jsp" target="_blank">登陆</a>91 </td>92 </tr>93</table>94 </form>95 </body>96 </html>

5:再创建utils层,公共的工具层BaseDao.java;

1 package com.bie.utils; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.SQLException; 8 import java.util.ResourceBundle; 9 10 11 /** 12 * @author BieHongLi 13 * @version 创建时间:2月21日 上午10:01:14 14 * 数据交互层dao层 15 */ 16 public class BaseDao { 17 18private static String driver;//数据库驱动 19private static String url;//数据库路径,找到对应的数据库 20private static String user;//数据库账号 21private static String password;//数据库密码 2223static{ 24 driver=ResourceBundle.getBundle("db").getString("driver"); 25 url=ResourceBundle.getBundle("db").getString("url"); 26 user=ResourceBundle.getBundle("db").getString("user"); 27 password=ResourceBundle.getBundle("db").getString("password"); 28} 29/*private static String driver="com.mysql.jdbc.Driver"; 30private static String url="jdbc:mysql:///test"; 31private static String user="root"; 32private static String password="123456";*/ 3334/*** 35* 连接数据库的方法 36* @return 37* @throws ClassNotFoundException 38* @throws SQLException 39*/ 40public static Connection getCon() throws ClassNotFoundException, SQLException{ 41 Class.forName(driver);//加载数据库驱动 42 System.out.println("测试加载数据库成功"); 43 Connection con=DriverManager.getConnection(url, user, password); 44 System.out.println("测试数据库链接成功"); 45 return con; 46} 4748/*** 49* 关闭数据库的方法 50* @param con 51* @param ps 52* @param rs 53*/ 54public static void close(Connection con,PreparedStatement ps,ResultSet rs){ 55 if(rs!=null){//关闭资源,避免出现异常 56 try { 57 rs.close(); 58 } catch (SQLException e) { 59 // TODO Auto-generated catch block 60 e.printStackTrace(); 61 } 62 } 63 if(ps!=null){ 64 try { 65 ps.close(); 66 } catch (SQLException e) { 67 // TODO Auto-generated catch block 68 e.printStackTrace(); 69 } 70 } 71 if(con!=null){ 72 try { 73 con.close(); 74 } catch (SQLException e) { 75 // TODO Auto-generated catch block 76 e.printStackTrace(); 77 } 78 } 79} 8081/*** 82* 同意增删改的方法 83* @param sql 84* @param arr 85* @return 86*/ 87public static boolean addUpdateDelete(String sql,Object[] arr){ 88 Connection con=null; 89 PreparedStatement ps=null; 90 try { 91 con=BaseDao.getCon();//第一步 :连接数据库的操作 92 ps=con.prepareStatement(sql);//第二步:预编译 93 //第三步:设置值 94 if(arr!=null && arr.length!=0){ 95 for(int i=0;i<arr.length;i++){ 96 ps.setObject(i+1, arr[i]); 97 } 98 } 99 int count=ps.executeUpdate();//第四步:执行sql语句100 if(count>0){101 return true;102 }else{103 return false;104 }105 } catch (ClassNotFoundException e) {106 // TODO Auto-generated catch block107 e.printStackTrace();108 } catch (SQLException e) {109 // TODO Auto-generated catch block110 e.printStackTrace();111 }112 return false;113}114115/*public static void main(String[] args) {116 try {117 BaseDao.getCon();118 System.out.println("测试数据库链接成功");119 } catch (ClassNotFoundException e) {120 // TODO Auto-generated catch block121 e.printStackTrace();122 } catch (SQLException e) {123 // TODO Auto-generated catch block124 e.printStackTrace();125 }126}*/127128129 }

6:然后创建dao层数据交互层的接口和实现类

1 package com.bie.dao; 2 3 import com.bie.po.User; 4 5 /** 6 * @author BieHongLi 7 * @version 创建时间:2月21日 上午10:38:40 8 * 创建一个接口用于声明用户登陆注册的方法 9 */10 public interface UserDao {11 12/***13* 用户登陆的方法声明14* @param user15* @return16*/17public User login(User user);1819/***20* 用户注册的方法声明21* @param user22* @return23*/24public boolean register(User user);25 }

1 package com.bie.dao.impl; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.util.ArrayList; 8 import java.util.List; 9 10 import com.bie.dao.UserDao;11 import com.bie.po.User;12 import com.bie.utils.BaseDao;13 14 /** 15 * @author BieHongLi 16 * @version 创建时间:2月21日 上午10:38:56 17 * 18 */19 public class UserDaoImpl implements UserDao{20 21@Override22public User login(User user) {23 Connection con=null;24 PreparedStatement ps=null;25 ResultSet rs=null;26 try {27 con=BaseDao.getCon();//1:获取数据库的连接28 //2:书写sql语句29 String sql="select * from user where name=? and password=? ";30 ps=con.prepareStatement(sql);//3:预编译31 //4:设置值32 ps.setString(1, user.getName());33 ps.setString(2, user.getPassword());34 rs=ps.executeQuery();//5:执行sql语句35 User users=null;36 if(rs.next()){37 users=new User();38 //从数据库中获取值设置到实体类的setter方法中39 users.setId(rs.getInt("id"));40 users.setName(rs.getString("name"));41 users.setPassword(rs.getString("password"));42 users.setEmail(rs.getString("email"));43 users.setPhone(rs.getString("phone"));44 45 return user;46 }else{47 return null;48 }49 50 } catch (ClassNotFoundException e) {51 // TODO Auto-generated catch block52 e.printStackTrace();53 } catch (SQLException e) {54 // TODO Auto-generated catch block55 e.printStackTrace();56 }57 return null;58}59 60/***61* 插入的方法,即注册62*/63@Override64public boolean register(User user) {65 String sql="insert into user values(0,?,?,?,?) ";66 List<Object> list=new ArrayList<Object>();67 list.add(user.getName());68 list.add(user.getPassword());69 list.add(user.getEmail());70 list.add(user.getPhone());71 72 boolean flag=BaseDao.addUpdateDelete(sql,list.toArray());73 if(flag){74 return true;75 }else{76 return false;77 }78}79 8081 }

7:再创建servlet层进行登陆的业务逻辑处理(由于省去了service层,所以在servlet层进行业务逻辑处理了)

1 package com.bie.servlet; 2 3 import java.io.IOException; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.annotation.WebServlet; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse;10 11 import com.bie.dao.UserDao;12 import com.bie.dao.impl.UserDaoImpl;13 import com.bie.po.User;14 15 16 /** 17 * @author BieHongLi 18 * @version 创建时间:2月21日 上午10:49:44 19 * 20 */21 @WebServlet("/user/userlogin")22 public class UserLoginServlet extends HttpServlet{2324private static final long serialVersionUID = 1L;25 26@Override27protected void doGet(HttpServletRequest request, HttpServletResponse response) 28 throws ServletException, IOException {29 this.doPost(request, response);30}31 32@Override33protected void doPost(HttpServletRequest request, HttpServletResponse response) 34 throws ServletException, IOException {35 User user=new User();36 //获取login.jsp页面提交的账号和密码37 String name=request.getParameter("name");38 String password=request.getParameter("password");39 //测试数据40 System.out.println(name+" "+password);41 //获取login.jsp页面提交的账号和密码设置到实体类User中42 user.setName(name);43 user.setPassword(password);44 45 //引入数据交互层46 UserDao dao=new UserDaoImpl();47 User us=dao.login(user);48 //测试返回的值49 System.out.println(us);50 if(us!=null){51 request.setAttribute("info", "登陆成功");52 }else{53 request.setAttribute("info", "登录失败");54 }55 56 request.getRequestDispatcher("/index/info.jsp").forward(request, response);57}58596061 }

8:再创建servlet层进行注册的业务逻辑处理(由于省去了service层,所以在servlet层进行业务逻辑处理了)

1 package com.bie.servlet; 2 3 import java.io.IOException; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.annotation.WebServlet; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse;10 11 import com.bie.dao.UserDao;12 import com.bie.dao.impl.UserDaoImpl;13 import com.bie.po.User;14 15 /** 16 * @author BieHongLi 17 * @version 创建时间:2月21日 下午1:34:17 18 * 注册的servlet19 */20 @WebServlet("/user/userregister")21 public class UserRegisterServlet extends HttpServlet{2223private static final long serialVersionUID = 1L;24 25@Override26protected void doGet(HttpServletRequest request, HttpServletResponse response) 27 throws ServletException, IOException {28 this.doPost(request, response);29}30 31@Override32protected void doPost(HttpServletRequest request, HttpServletResponse response) 33 throws ServletException, IOException {34 User user=new User();35 //获取login.jsp页面提交的账号和密码36 String name=request.getParameter("name");37 String password=request.getParameter("password");38 String email=request.getParameter("email");39 String phone=request.getParameter("phone");40 41 //获取register.jsp页面提交的账号和密码设置到实体类User中42 user.setName(name);43 user.setPassword(password);44 user.setEmail(email);45 user.setPhone(phone);46 47 //引入数据交互层48 UserDao dao=new UserDaoImpl();49 boolean flag=dao.register(user);50 if(flag){51 request.setAttribute("info", "注册成功");52 }else{53 request.setAttribute("info", "注册失败");54 }55 56 request.getRequestDispatcher("/index/info.jsp").forward(request, response);57}5859 }

9:为了避免乱码,使用过滤器进行过滤。

1 package com.bie.utils; 2 3 import java.io.IOException; 4 5 import javax.servlet.Filter; 6 import javax.servlet.FilterChain; 7 import javax.servlet.FilterConfig; 8 import javax.servlet.ServletException; 9 import javax.servlet.ServletRequest;10 import javax.servlet.ServletResponse;11 import javax.servlet.annotation.WebFilter;12 import javax.servlet.http.HttpServletRequest;13 14 /** 15 * @author BieHongLi 16 * @version 创建时间:2月21日 上午11:08:49 17 * 18 */19 @WebFilter("/*")20 public class UTFFilter implements Filter{21 22@Override23public void destroy() {24 // TODO Auto-generated method stub25 26}27 28@Override29public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, 30 FilterChain filterChain)throws IOException, ServletException {31 //将servletRequest转发为HttpServletRequest32 HttpServletRequest request=(HttpServletRequest)servletRequest;33 request.setCharacterEncoding("utf-8");34 filterChain.doFilter(servletRequest, servletResponse);35}36 37@Override38public void init(FilterConfig arg0) throws ServletException {39 // TODO Auto-generated method stub40 41}4243 44 }

效果如下所示:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。