标签:不一致 padding jsp its 返回 解析 equal owa rac
要求:3层框架,使用验证码
l 注册
l 登录
1.1 JSP页面
l regist.jsp
l login.jsp
l index.jsp
1.2 实体类
User:
l String username;
l String password;
1.3 Servlet
l VerifyCodeServlet
l RegistServlet
校验用户名、密码、验证码不能为空,校验失败,向request中保存错误信息,转发回
l LoginServlet
l QuitServlet
1.4 Service
UserException:为UserService使用的异常类;
UserService:
l void regist(User user):
l User login(String username, String password):
1.5 DAO
UserDao:
l void add(User):
l User findByUsername(String username):
2.1 注册
l 用户在浏览器地址栏中请求regist.jsp;
l 服务器发送html给浏览器;
l 浏览器收到html,开始解析,并显示;
l 解析到<img>时,请求VerifyCodeServlet;
l VerifyCodeServlet生成验证码图片,保存验证码文本,把图片响应给浏览器;
l 浏览器显示在页面中显示图片。
2.2 登录
此处省略10000字
login.jsp
<body> <h1>登录</h1> <hr/> <p style="font-weight: 900; color: red;">${msg }</p> <form action="<c:url value=‘/LoginServlet‘/>" method="post"> 用户名:<input type="text" name="username" value="${user.username }" /><br/> 密 码:<input type="password" name="password"/><br/> 验证码:<input type="text" name="loginCode" size="2"/> <img id="vCode" src="<c:url value=‘/VerifyCodeServlet?name=loginCode‘/>" border="2"/> <a href="javascript:_change()" style="font-size: 12;">看不清,换一张</a><br/> <input type="submit" value="登录"/> </form> </body> |
<script type="text/javascript"> function _change() { var img = document.getElementById("vCode"); img.src = "<c:url value=‘/VerifyCodeServlet?name=loginCode&‘/>" + new Date().getTime(); } </script> |
regist.jsp
<body> <h1>注册</h1> <hr/> <p style="font-weight: 900; color: red;">${msg }</p> <form action="<c:url value=‘/RegistServlet‘/>" method="post"> 用户名:<input type="text" name="username" value="${user.username }" /><br/> 密 码:<input type="password" name="password"/><br/> 确认密码:<input type="password" name="repassword"/><br/> 验证码:<input type="text" name="registCode" size="2"/> <img id="vCode" src="<c:url value=‘/VerifyCodeServlet?name=registCode‘/>" border="2"/> <a href="javascript:_change()" style="font-size: 12;">看不清,换一张</a><br/> <input type="submit" value="注册"/> </form> </body> |
<script type="text/javascript"> function _change() { var img = document.getElementById("vCode"); img.src = "<c:url value=‘/VerifyCodeServlet?name=registCode&‘/>" + new Date().getTime(); } </script> |
index.jsp
<body> <h1>主页</h1> <hr/> <c:choose> <c:when test="${empty sessionScope.user }"> 您还没有登录 </c:when> <c:otherwise> 用户名:${sessionScope.user.username } <a href="<c:url value=‘/QuitServlet‘/>">退出</a> </c:otherwise> </c:choose> </body> |
VerifyCodeServlet
public class VerifyCodeServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name");
VerifyCode vc = new VerifyCode();//创建验证码类 BufferedImage image = vc.getImage();//创建验证码图片 request.getSession().setAttribute(name, vc.getText());//获取验证码文本 System.out.println(vc.getText()); VerifyCode.output(image, response.getOutputStream());//输出图片到页面 } } |
RegistServlet
public class RegistServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8");
User user = new User(); try { BeanUtils.populate(user, request.getParameterMap()); } catch (Exception e) { } String loginCode = request.getParameter("registCode"); String repassword = request.getParameter("repassword");
if(user.getUsername() == null || user.getUsername().trim().isEmpty()) { request.setAttribute("msg", "用户名不能为空!"); request.setAttribute("user", user); request.getRequestDispatcher("/regist.jsp").forward(request, response); return; } if(user.getPassword() == null || user.getPassword().trim().isEmpty()) { request.setAttribute("msg", "密码不能为空!"); request.setAttribute("user", user); request.getRequestDispatcher("/regist.jsp").forward(request, response); return; } if(!user.getPassword().equals(repassword)) { request.setAttribute("msg", "两次输入不一致!"); request.setAttribute("user", user); request.getRequestDispatcher("/regist.jsp").forward(request, response); return; } if(loginCode == null || loginCode.trim().isEmpty()) { request.setAttribute("msg", "验证码不能为空!"); request.setAttribute("user", user); request.getRequestDispatcher("/regist.jsp").forward(request, response); return; }
String vCode = (String)request.getSession().getAttribute("registCode"); request.getSession().removeAttribute("registCode"); if(!vCode.equalsIgnoreCase(loginCode)) { request.setAttribute("msg", "验证码错误!"); request.setAttribute("user", user); request.getRequestDispatcher("/regist.jsp").forward(request, response); return; }
UserService userService = new UserService(); try { userService.regist(user); request.getRequestDispatcher("/login.jsp").forward(request, response); } catch (UserException e) { request.setAttribute("msg", e.getMessage()); request.setAttribute("user", user); request.getRequestDispatcher("/regist.jsp").forward(request, response); return; } } } |
LoginServlet
public class LoginServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8");
String username = request.getParameter("username"); String password = request.getParameter("password"); String loginCode = request.getParameter("loginCode");
if(username == null || username.trim().isEmpty()) { request.setAttribute("msg", "用户名不能为空!"); request.setAttribute("username", username); request.getRequestDispatcher("/login.jsp").forward(request, response); return; } if(password == null || password.trim().isEmpty()) { request.setAttribute("msg", "密码不能为空!"); request.setAttribute("username", username); request.getRequestDispatcher("/login.jsp").forward(request, response); return; } if(loginCode == null || loginCode.trim().isEmpty()) { request.setAttribute("msg", "验证码不能为空!"); request.setAttribute("username", username); request.getRequestDispatcher("/login.jsp").forward(request, response); return; }
String vCode = (String)request.getSession().getAttribute("loginCode"); request.getSession().removeAttribute("loginCode"); if(!vCode.equalsIgnoreCase(loginCode)) { request.setAttribute("msg", "验证码错误!"); request.setAttribute("username", username); request.getRequestDispatcher("/login.jsp").forward(request, response); return; }
UserService userService = new UserService(); User user; try { user = userService.login(username, password); } catch (UserException e) { request.setAttribute("msg", e.getMessage()); request.setAttribute("username", username); request.getRequestDispatcher("/login.jsp").forward(request, response); return; }
request.getSession().setAttribute("user", user); request.getRequestDispatcher("/index.jsp").forward(request, response); } } |
QuitServlet
public class QuitServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 使session失效 request.getSession().invalidate(); response.sendRedirect(request.getContextPath() + "/index.jsp"); } } |
UserException
public class UserException extends Exception { public UserException() {} public UserException(String message, Throwable cause) { super(message, cause); } public UserException(String message) { super(message); } public UserException(Throwable cause) { super(cause); } } |
UserService
public class UserService { private UserDao userDao = new UserDao();
public User login(String username, String password) throws UserException { User user = userDao.findByUsername(username); if(user == null) { throw new UserException("用户名错误!"); } if(!user.getPassword().equals(password)) { throw new UserException("密码错误!"); } return user; }
public void regist(User user) throws UserException { User _user = userDao.findByUsername(user.getUsername()); if(_user != null) { throw new UserException("用户名已注册!"); } userDao.add(user); } } |
UserDao
public class UserDao { private String path;
public UserDao() { path = this.getClass().getResource("/users.xml").getPath(); }
public void add(User user) { try { SAXReader reader = new SAXReader(); Document doc = reader.read(path);
Element root = doc.getRootElement(); Element userEle = root.addElement("user"); userEle.addAttribute("username", user.getUsername()); userEle.addAttribute("password", user.getPassword());
// 创建格式化器,使用\t缩进,添加换行 OutputFormat format = new OutputFormat("\t", true); // 清空数据中原有的换行 format.setTrimText(true); // 创建XML输出流对象 XMLWriter writer = new XMLWriter(new FileWriter(path), format); // 输出Document writer.write(doc); // 关闭流 writer.close();
} catch (Exception e) { throw new RuntimeException(e); } }
public User findByUsername(String username) { try { SAXReader reader = new SAXReader(); Document doc = reader.read(path); Element ele = (Element) doc.selectSingleNode("//user[@username=‘" + username + "‘]"); if(ele == null) { return null; } User user = new User(); user.setUsername(ele.attributeValue("username")); user.setPassword(ele.attributeValue("password")); return user; } catch (Exception e) { throw new RuntimeException(e); } } } |
标签:不一致 padding jsp its 返回 解析 equal owa rac
原文地址:http://www.cnblogs.com/20161207ding/p/6142940.html