300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 注册登录验证码页面

注册登录验证码页面

时间:2023-11-16 14:13:19

相关推荐

注册登录验证码页面

1、数据库

create database charRoom;use charRoom;create table user(username varchar(20),password varchar(20),email varchar(30));

2、连接数据库

jdbc.properties文件

driverClass=com.mysql.jdbc.Driverurl=jdbc:mysql:///charRoomusername=rootpassword=XXX

自己编写JdbcUtils工具类连接数据库

部分代码..public class JdbcUtils {private static final String DRIVERCLASS;private static final String URL;private static final String USERNAME;private static final String PASSWORD;static{DRIVERCLASS = ResourceBundle.getBundle("jdbc").getString("driverClass");URL = ResourceBundle.getBundle("jdbc").getString("url");USERNAME = ResourceBundle.getBundle("jdbc").getString("username");PASSWORD = ResourceBundle.getBundle("jdbc").getString("password");}static{try{// 将加载驱动操作,放置在静态代码块中,这样就保证了只加载一次Class.forName(DRIVERCLASS);}catch (Exception e) {e.printStackTrace();}}

3、生成数据库user的JavaBean对象

部分代码public class User {private String username;private String password;private String email;public User() {super();}...}

4、注册页面

请求RequestServlet控制器完成操作

<script type="text/javascript">function run(){//完成校检//用户名不能为空:var username = document.form1.username.value;if(username == "" || username.length == 0){alert("用户名不能为空!");return false;}//密码不能为空且不能小于六位var password = document.form1.password.value;if(password == "" || password.length < 6){alert("密码至少六位!");return false;}//确认密码必须与密码一致var repassword = document.form1.repassword.value;if(repassword != password || repassword == ""){alert("两次密码不一致!");return false;}//检查邮箱格式var email = document.form1.email.value;if(!(/.+@.+\.[a-zA-Z]{2,4}$/.test(email))){alert("邮箱格式不正确!");return false;}return true;}</script></head><body><font color="red">${requestScope.message }</font><form name="form1" action="/webCharRoom/RegistServlet" method="POST" onsubmit="return run()"><table border="1" width="40%" height="80%"><tr><td>用户名:</td><td><input type="text" name="username"/></td></tr><tr><td>密码:</td><td><input type="password" name="password"/></td></tr><tr><td>确认密码:</td><td><input type="password" name="repassword"/></td></tr><tr><td>邮箱:</td><td><input type="text" name="email"/></td></tr><tr><td colspan="2" align="center"><input type="submit" value="注册"/></td></tr></table></form></body></html>

5、RegistServlet

完成注册功能

1、获取注册页面中的数据

Map<String, String[]> map = request.getParameterMap();

2、需要把数据封装到JavaBean中,使用BeanUtils开发包,这里需要导入beanUtils开发包

3、调用userService处理数据

4、把结果返回到页面中

部分代码//从注册页面获取参数Map<String, String[]> map = request.getParameterMap();User user = new User();//使用BeanUtils封装数据try{BeanUtils.populate(user, map);//调用处理业务的类UserService registService = new UserService();//根据返回值判断是否重名或者邮箱存在int flag = registService.addUser(user);if(flag == 0){//用户名或者邮箱已经存在数据库中request.setAttribute("message", "用户名或邮箱已经存在!");//转发到注册界面request.getRequestDispatcher("/login/login.jsp").forward(request, response);}else if(flag > 0){ request.setAttribute("message", "注册成功!");//注册成功跳转到登录界面request.getRequestDispatcher("/login/login.jsp").forward(request, response);}else{request.setAttribute("message", "出现错误!");request.getRequestDispatcher("/regist/regist.jsp").forward(request,response);}

6、UserService

通过Dao操作操作数据库

添加用户,首先判断用户名是否重名,邮箱是否已经被使用

部分代码public class UserService {UserDao userDao = new UserDao();public int addUser(User user) throws SQLException{return userDao.addUser(user);}UserDao添加用户操作String insertSql = "insert into user values(?,?,?)";String selectSql = "select * from user where username = ? or email = ?";//通过工具类连接数据库connection = JdbcUtils.getConnection();preparedStatement1 = connection.prepareStatement(selectSql);preparedStatement1.setString(1, user.getUsername());preparedStatement1.setString(2, user.getEmail());resultSet = preparedStatement1.executeQuery();//用户名或邮箱存在if(resultSet.next()){return 0;}preparedStatement2 = connection.prepareStatement(insertSql);preparedStatement2.setString(1, user.getUsername());preparedStatement2.setString(2, user.getPassword());preparedStatement2.setString(3, user.getEmail());return preparedStatement2.executeUpdate();

7、注册成功后到登录界面,此时数据库中已经有注册的数据了

登录界面添加一个验证码<tr><td>验证码:</td><td><input type="text" name="code" height="60%"/><img id="imgId" src="/webCharRoom/YZMUtil"><a href="#" onclick="run()">看不清,换一张</a></td></tr>

8、生成验证码的工具类YZMUtils

部分代码..Random random = new Random();StringBuffer sBuffer = new StringBuffer();int x = 20;int y = 25;for (int i = 0; i < 4; i++){int index = random.nextInt(STRING.length());char ch = STRING.charAt(index);// abstract void rotate(double theta, double x, double y) // theta:弧度// 角度转弧度 30*Math.PI/180// 获取正负30之间的弧度int jiaodu = random.nextInt(60)-30;int hudu = (int) (jiaodu * Math.PI / 180);pen.rotate(hudu, x, y);// 通过画笔对象把字符写在图片上pen.drawString(""+ch, x, y);pen.rotate(-hudu, x, y);x+=20;sBuffer.append(ch);}// 存入session中,在后面检验验证码要用到request.getSession().setAttribute("code", sBuffer);

9、处理登录界面的LoginServlet的控制器

判断验证码是否正确

首先将我们生成的四个字符存入session中

在控制页面中获取session中存入的字符串

同时获取从登录页面输入的字符串

判断是否相同

// 获取session中的验证码StringBuffer code = (StringBuffer) request.getSession().getAttribute("code");String code1 = code.toString();// 获取表单中的验证码String code2 = request.getParameter("code");// 是否相同if(code2!=null && code1.equals(code2)){//从注册页面获取参数Map<String, String[]> map = request.getParameterMap();User userLogin = new User();//使用BeanUtils封装数据try{BeanUtils.populate(userLogin, map);//调用处理业务的类UserService registService = new UserService();User user = registService.selectUser(userLogin);if(user == null){request.setAttribute("message", "用户名或密码错误!");request.getRequestDispatcher("/login/login.jsp").forward(request,response);}else{//登录成功request.setAttribute("message", "登录成功!");request.getRequestDispatcher("/login/login.jsp").forward(request,response);}}catch (Exception e) {e.printStackTrace();}}else{request.setAttribute("message", "验证码错误!");// 转发request.getRequestDispatcher("/login/login.jsp").forward(request, response);}

框图

代码链接

/s/1iI_1R4TquRUgej8dIZ5MTg

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