广州双城热恋创意文化传播有限公司

现在的位置: 主页 > 商讯 > 文章列表

文章正文

Web表单处理的关键概念:博客注册用户

作者:广州双城热恋创意文化传播有限公司 来源:www.666loveyou.com 发布时间:2017-09-06 09:54:27
Web表单处理的关键概念:博客注册用户

我们已经了解了Web表单处理的关键概念,接下来我们就以博客注册用户表单为例来回顾应用我们之前学过的知识。

存储用户信息

到目前为止,我们尚未学习任何数据存储的知识,在本节中我们将用户注册的信息存放在内存中(即Java程序中的某个变量)。首先看看用户注册表单需要填写的信息:

Clipboard Image.png

在博客系统中,用户信息包括:

用户名——用户的唯一标识符,每一个用户的用户名必须不同密码——用户登录的密码凭证电子邮箱用户博客的标题用户博客的描述、简介用户头像URL

根据此可以设计User类来表示用户对象:

public class User { private long id; private String username; private String password; private String avatar = "images/default-avatar.jpeg"; private String title; private String email; private String description; public User(String username, String password, String email, String title, String description) { this.username = username; this.password = password; this.email = email; this.title = title; this.description = description; } }

这里用户头像我们暂时使用默认值。需要把头像图片保存为WebContent/images/default-avatar.jpeg。

博客系统中可能有多个用户,我们使用一个List来保存它,List作为Data类的静态变量存在于内存中:

public class Data { public static List users = new ArrayList<>(); static { users.add(new User("luoruici", "password", "[email protected]", "Ruici", "Ruici's Blog")); } public static User getByUsername(String username) { return users.stream() .filter(e -> e.getUsername().equals(username)) .findFirst() .orElse(null); } }

Data类中还向用户列表中添加了一个新用户用作测试,另外提供了一个函数——根据username查找用户,这个函数在后面会经常被调用。

处理用户表单

处理用户表单的Servlet主要做这样几件事情:

获取表单数据对表单数据进行校验如果校验成功,向用户列表中添加一个新的对象,并返回成功提示信息到浏览器;如果校验失败,直接将错误信息返回到表单界面,让用户重新填写。

具体处理代码如下:

@WebServlet("/account/signup") public class RegisterController extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String username = req.getParameter("username"); String password = req.getParameter("password"); String email = req.getParameter("email"); String title = req.getParameter("title"); String description = req.getParameter("description"); if (username != null && !username.isEmpty() && Data.getByUsername(username) != null) { req.setAttribute("usernameExist", true); RequestDispatcher dispatcher = req.getRequestDispatcher("/jsp/register.jsp"); dispatcher.forward(req, resp); } else { User user = new User(username, password, email, title, description); Data.users.add(user); RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/templates/registerResult.jsp"); dispatcher.forward(req, resp); } } }

其中Data.getByUsername(username) != null表明用户名已经存在,此时应该将请求转发给register.jsp也就是注册表单页面,同时告知用户名已经存在。那么register.jsp中也应该加入相应的处理代码:

用户名已经存在

当然这部分代码只是对username这一个字段的校验,其他字段可以根据业务需求写出类似的校验代码,这里就不一一赘述了。

如果表单数据通过校验,则用户列表中会新添加一个用户,此时渲染registerResult.jsp页面,告知用户已经注册成功:

<%@include file="common/head.jsp"><%@include file="common/userNav.jsp"><%@include file="common/userNav.jsp"> 注册成功

注册成功!请登录。

<%@include file="common/footer.jsp">

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:十堰SEO http://shiyan.4567w.com


COPYRIGHT © 2015 广州双城热恋创意文化传播有限公司 ALL RIGHTS RESERVED.
网站地图 技术支持:肥猫科技
精彩专题:网站建设
购买本站友情链接、项目合作请联系客服QQ:2500-38-100