栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

应该使用session处理错误消息以进行表单验证吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

应该使用session处理错误消息以进行表单验证吗?

服务器端会话在同一客户端会话的所有请求之间共享。只要用户首次访问该站点,会话就一直存在,直到该会话过期(超过30分钟不使用(可配置)),或者该会话被明确禁用。使用您的方法,在新的浏览器选项卡中打开同一页面。当根本不输入/提交新页面中的表单时,您仍然会看到错误消息。这不利于用户体验。

通常的做法是将错误消息存储在请求范围内,然后将请求 转发
到同一页面,而不是重定向到该页面。如果使用完全有价值的Servlet类而不是JSP文件进行处理和验证,则这很容易。例如

/WEB-INF/register.jsp

<form method="post" action="register">    <p><label for="username">Username</label>    <input type="text" id="username" name="username" value="${fn:escapeXml(param.username)}">    <span >${messages.username}</span>    <p><label for="password">Password</label>    <input type="password" id="password" name="password">    <span >${messages.password}</span>    <p><label for="/confirm/i">Confirm password <span >*</span></label>    <input type="password" id="/confirm/i" name="/confirm/i">    <span >${messages./confirm/i}</span>    <p><input type="submit" value="Register">    <p>${messages.result}</p></form>

com.example.RegisterServlet

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    Map<String, String> messages = new HashMap<String, String>();    request.setAttribute("messages", messages); // Will be available by ${messages}.    String username = request.getParameter("username");    if (username == null  || username.trim().isEmpty()) {        messages.put("username", "Please enter username");    }    // ...    request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response);}

如下所示映射此servlet

web.xml

<servlet>    <servlet-name>registerServlet</servlet-name>    <servlet-class>com.example.RegisterServlet</servlet-class></servlet><servlet-mapping>    <servlet-name>registerServlet</servlet-name>    <url-pattern>/register</url-pattern></servlet-mapping>

通过http://example.com/context/register将其打开,然后继续。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/615930.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号