• 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>");
    	}
    }
    

      

  • 相关阅读:
    浏览器不兼容原因及解决办法
    VC++ MFC DLL动态链接库编写详解
    Saas是什么?
    用CSS中的Alpha实现渐变
    一种真正意义上的Session劫持[转]
    使用.NET Framework中新的日期时间类型[转]
    Hook、钩子、VC++ 基本概念
    H264
    Windows编程中各种操作文件的方法
    将TCP/IP协议移植到内嵌的弹片机中配合GPRS无线模块开发应用
  • 原文地址:https://www.cnblogs.com/Scorpicat/p/12346182.html
Copyright © 2020-2023  润新知