标签:userdata res 存储 invalid lin log home utf-8 print
先进行演示再看代码
登录网站首页
点击还不是会员
输入合法的地址 名称 密码
返回再次输入
注册成功实际上是在电脑的盘符中建立文件夹 文件夹里面有个profile文件 这里暂时没有用到数据库
如果注册过程中存在错误 就会打印错误信息
登陆
登陆成功
程序组成如下
静态网页 两个
登录页面
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Gossip 微网志</title> <link rel="stylesheet" href="css/index.css" type="text/css"> </head> <body> <div id="loginPanel"> <div> <img src=‘images/caterpillar.jpg‘ alt=‘Gossip 微网志‘/> </div> <a href=‘register.html‘>还不是会员?</a> <p> <form method=‘post‘ action=‘login.do‘> <table bgcolor=‘#cccccc‘> <tr> <td colspan=‘2‘>会员登录</td> <tr> <td>名称:</td> <td><input type=‘text‘ name=‘username‘></td> </tr> <tr> <td>密码:</td> <td><input type=‘password‘ name=‘password‘></td> </tr> <tr> <td colspan=‘2‘ align=‘center‘><input type=‘submit‘ value=‘登入‘></td> </tr> <tr> <td colspan=‘2‘><a href=‘forgot.html‘>忘记密码?</a> </td> </tr> </table> </form> </div> <div> <h1>Gossip ... XD</h1> <ul> <li>谈天说地不奇怪 <li>分享讯息也可以 <li>随意写写表心情 </ul> </div> </body> </html>
注册页面
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Gossip 微网志</title> </head> <body> <h1>会员注册</h1> <form method=‘post‘ action=‘register.do‘> <table bgcolor=#cccccc> <tr> <td>邮件地址:</td> <td><input type=‘text‘ name=‘email‘ size=‘25‘ maxlength=‘100‘> </td> </tr> <tr> <td>名称(最大16字符):</td> <td><input type=‘text‘ name=‘username‘ size=‘25‘ maxlength=‘16‘> </td> </tr> <tr> <td>密码(6到16字符):</td> <td><input type=‘password‘ name=‘password‘ size=‘25‘ maxlength=‘16‘> </td> </tr> <tr> <td>确认密码:</td> <td><input type=‘password‘ name=‘confirmedPasswd‘ size=‘25‘ maxlength=‘16‘> </td> </tr> <tr> <td colspan=‘2‘ align=‘center‘><input type=‘submit‘ value=‘注册‘> </td> </tr> </table> </form> </body> </html>
index的css 图片就不给出来了
body { font-family: Arial, Helvetica, sans-serif; font-size: 13px } li,td {Arial , Helvetica, sans-serif; font-size: 13px } hr { color: #3333cc; width: 300; text-align: left } a { color: #000000 } #loginPanel { width : 250px; float : left; }
控制器两个
登陆控制器
package cc.openhome.controller; import java.io.*; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/login.do") public class Login extends HttpServlet { private final String USERS = "F:/USERDATABASE"; private final String SUCCESS_VIEW = "member.view"; private final String ERROR_VIEW = "index.html"; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String userName=request.getParameter("username"); String passWord=request.getParameter("password"); if(checkLogin(userName,passWord)) { request.getRequestDispatcher(SUCCESS_VIEW).forward(request, response);; } else //如果用户名密码不正确 重定向回到首页 response.sendRedirect(ERROR_VIEW); } /** * 通过检索文件判断是否存在账号密码 * @param username * @param password * @return * @throws IOException */ private boolean checkLogin(String username, String password) throws IOException { if(username != null && password != null) { for (String file : new File(USERS).list()) { if (file.equals(username)) { BufferedReader reader = new BufferedReader( new FileReader(USERS + "/" + file + "/profile")); String passwd = reader.readLine().split("\t")[1]; if(passwd.equals(password)) { return true; } } } } return false; } }
注册控制器
package cc.openhome.controller; import java.io.*; import java.util.*; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/register.do") public class Register extends HttpServlet { private final String USERS = "F:/USERDATABASE"; private final String SUCCESS_VIEW = "success.view"; private final String ERROR_VIEW = "error.view"; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String email=request.getParameter("email"); String username=request.getParameter("username"); String password=request.getParameter("password"); String confirmedPasswd=request.getParameter("confirmedPasswd"); List<String> errors=new ArrayList<String>(); //判断邮件是否正确 if(isInvalidEmail(email)) { errors.add("未填写邮件或邮件格式不正确"); } //判断用户名是否正确 if(isInvalidUsername(username)) { errors.add("用户名称为空或已存在"); } //判断密码是否正确 if(isInvalidPassword(password, confirmedPasswd)) { errors.add("请确认密码符合格式并再次确认密码"); } String resultType=ERROR_VIEW; //如果有任何错误 if(!errors.isEmpty()) { request.setAttribute("errors", errors); } //如果没有任何错误 else { resultType=SUCCESS_VIEW; createUserData(email, username, password); } request.getRequestDispatcher(resultType).forward(request, response); } /** * 判断是否是非法邮箱 * @param email * @return */ private boolean isInvalidEmail(String email) { return email == null || !email.matches("^[_a-z0-9-]+([.]" + "[_a-z0-9-]+)*@[a-z0-9-]+([.][a-z0-9-]+)*$"); } /** * 通过文件名来判断是否有用户存在 * @param username * @return */ private boolean isInvalidUsername(String username) { //如果没有输入任何字符 得到的其实是空串而不是Null if(username=="") return true; //列出所有目录 如果有该目录 则说明用户存在 for (String file : new File(USERS).list()) { //判断是否存在文件(用户)且文件名称和我们输入的是否一样 if (file.equals(username)) { return true; } } return false; } /** * 判断密码是否合法且两次输入是否相同 * @param password * @param confirmedPasswd * @return */ private boolean isInvalidPassword(String password, String confirmedPasswd) { return password == null || password.length() < 6 || password.length() > 16 || !password.equals(confirmedPasswd); } /** * 创建用户数据并写入文件 * @param email * @param username * @param password * @throws IOException */ private void createUserData(String email, String username, String password) throws IOException { File userhome = new File(USERS + "/" + username); //以用户名的形式创建目录 userhome.mkdir(); //在目录中再创建一个profile存储邮箱和密码 BufferedWriter writer = new BufferedWriter( new FileWriter(userhome + "/profile")); writer.write(email + "\t" + password); writer.close(); } }
视图三个 这里先不用jsp 直接在Servlet中打印输出
注册失败页面
package cc.openhome.view; import java.io.*; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/error.view") public class Error extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设置返回编码 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE html PUBLIC " + "‘-//W3C//DTD HTML 4.01 Transitional//EN‘>"); out.println("<html>"); out.println("<head>"); out.println(" <meta content=‘text/html; charset=UTF-8‘" + "http-equiv=‘content-type‘>"); out.println(" <title>新增会员失败</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>新增会员失败</h1>"); out.println("<ul style=‘color: rgb(255, 0, 0);‘>"); //取得放在请求域中的错误信息 List<String> errors=(List<String>) request.getAttribute("errors"); for(String error:errors) { out.println("<li>"+error+"<li>"); } out.println("</ul>"); out.println("<a href=‘register.html‘>返回注册页面</a>"); out.println("</body>"); out.println("</html>"); out.close(); } }
登陆成功页面
package cc.openhome.view; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/member.view") public class Member extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE html PUBLIC ‘-//W3C//DTD HTML 4.01 Transitional//EN‘>"); out.println("<html>"); out.println("<head>"); out.println(" <meta content=‘text/html; charset=UTF-8‘ http-equiv=‘content-type‘>"); out.println(" <title>会员登入成功</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>会员 " + request.getParameter("username") + " 你好</h1>"); out.println("</body>"); out.println("</html>"); out.close(); } }
注册成功输出页面
package cc.openhome.view; import java.io.*; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/success.view") public class Success extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE html PUBLIC ‘-//W3C//DTD HTML 4.01 Transitional//EN‘>"); out.println("<html>"); out.println("<head>"); out.println(" <meta content=‘text/html; charset=UTF-8‘ http-equiv=‘content-type‘>"); out.println(" <title>会员注册成功</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>会员 " + request.getParameter("username") + " 注册成功</h1>"); out.println("<a href=‘index.html‘>回首页登入</a>"); out.println("</body>"); out.println("</html>"); out.close(); } }
标签:userdata res 存储 invalid lin log home utf-8 print
原文地址:http://www.cnblogs.com/HJL085/p/6412066.html