• 8 request作用域与set/getAttribute();


    request作用域

    request的作用域为:一次request周期,从请求到响应结束。

    set/getAttribute()

    如果我们需要在一个request周期内,不同的servlet之间传递一些额外信息(除原本的request对象中的信息),我们就需要使用request对象的set和getAttribute()方法来实现。

    例如:在 文章7的基础上,我们想添加这样一个功能:如果登陆失败了,返回到登录页面(PageServlet)并附加“账号或密码错误”句子,要如何做呢?

    第一步:我们在处理登陆的servlet中(LoginServlet),在判断为登陆失败的逻辑代码块中,加上req.setAttribute("msg","账号或密码错误");,如下:

    	//请求转发
    				req.setAttribute("msg", "账号或密码错误");
    				req.getRequestDispatcher("page").forward(req, resp);
    				return;
    			}
    

     

    第二步:在PageServlet中,我们加上这样两句句代码:

    • String msg = (String) req.getAttribute("msg")==null?"":(String) req.getAttribute("msg");
      resp.getWriter().write("<html>");

    • resp.getWriter().write("<font color='red' >"+msg+"</font><br>");

    完整的PageServlet代码如:

    package com.xiaohei.servlet;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.*;
    public class PageServlet extends HttpServlet{
    	@Override
    	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		//设置响应编码格式
    		resp.setContentType("text/html;charset=utf-8");
    		//获取请求信息
    		//处理请求
    		//响应处理结果
    		String msg = (String) req.getAttribute("msg")==null?"":(String) req.getAttribute("msg");
    		resp.getWriter().write("<html>");
    		resp.getWriter().write("<head>");
    		resp.getWriter().write("</head>");
    		resp.getWriter().write("<body>");
    		resp.getWriter().write("<form action='login' method='get'>");
    		resp.getWriter().write("<font color='red' >"+msg+"</font><br>");
    		resp.getWriter().write("用户名:<input type='text' name='uname' value=''><br>");
    		resp.getWriter().write("密码:<input type='text' name='pwd' value=''><br>");
    		resp.getWriter().write("<input type='submit' value='登录'><br>");
    		resp.getWriter().write("</form>");
    		resp.getWriter().write("</body>");
    		resp.getWriter().write("</html>");
    	}
    }
    

      

  • 相关阅读:
    2015的最后一天
    网络类型IPv4和IPv6什么意思?区别?
    2:文档编辑生成目录相关方法说明
    TCP与UDP的区别
    vs 2012 InstallShield Limited Edition Project 打包windows服务解析
    百科编辑器ueditor应用笔记
    百度编辑器Ueditor 初始化加载内容失败解决办法
    矩阵-DirectX与OpenGL的不同
    ios系统中各种设置项的url链接
    简单的优化处理 By LINQ TO SQL
  • 原文地址:https://www.cnblogs.com/Scorpicat/p/12346182.html
Copyright © 2020-2023  润新知