资讯专栏INFORMATION COLUMN

[Java Web]JSP/Servlet的学习(resopnse对象与session对象)

Flink_China / 3018人阅读

摘要:的学习与内置对象对象代表服务器对客户端的响应。在增加之前必须先创建对象。一次会话的含义是从客户端浏览器连接服务器开始,到客户端服务与断开为止。范围内的属性可以在多个页面的跳转之间共享。

Java Server Page的学习(resopnse与session)



内置对象 response对象

respone代表服务器对客户端的响应。如果要在JSP页面中动态生成一副位图

或者输出一个PDF文档,要用response作为响应输出。

response的三个作用:

1、响应生成非字符响应

response是HttpServletResponse接口的实例,该接口提供了一个getOutputStream()方法,
该方法返回响应输出字节流

<%@page contentType="image/png" language="java"%>
<%@page import="java.awt.image.*,javax.imageio.*,java.io.*,java.awt.*"%>
<%
        //创建BufferedImage对象
        BufferedImage image = new BufferedImage(340,160,BufferedImage.TYPE_INT_RGB);
        //以Image对象获取Graphics对象
        Graphics g = image.getGraphics();
        //使用Graphics画图,所画的图像将会出现在image中
        g.fillRect(0, 0, 400, 400);

        //设置颜色,画弧
        g.setColor(new Color(255,0,0));
        g.fillArc(20,20,100,100,30,120);
        g.setColor(new Color(0,255,0));
        g.fillArc(20,20,100,100,150,120);
        g.setColor(new Color(0,0,255));
        g.fillArc(20,20,100,100,270,120);

        //设置颜色画出三个字符串
        g.setColor(new Color(0,0,0));
        g.setFont(new Font("Arial Black",Font.PLAIN,16));
        g.drawString("red:climb", 200,60);
        g.drawString("green:swim", 200,100);
        g.drawString("blu:jump",200,140);
        g.dispose();
        //将图像输出到页面的响应
        ImageIO.write(image, "png", response.getOutputStream());
%>

2、重定向

和forward不同的是,response重定向会丢失所有的请求参数和request范围的属性,因为重定向将生成第二次请求。HttpServletResponse提供了一个sendRedirect(String path)方法,该方法用于重定向到path资源。

<%@ page contentType="text/html; charset=utf-8" language="java" errorPage="">
<%
    //生成页面响应
    out.println("====");
    //重定向到redirect-result.jsp页面
    response.setRedirect("redirect-result.jsp");
%>

3、向客户端增加cookie

response提供方法void addCookie(Cookie cookie)来增加cookie。在增加cookie之前必须先创建Cookie对象。

创建Cookie实例,Cookie的构造器为Cookie(String name,String value)

设置Cookie的生命期限,即该Cookie在多长时间内有效

向客户端写Cookie

添加cookie:

<%@ page contentType="text/html; charset=utf-8" language="java" errorPage="">



    增加Cookie


    <%
        //获取请求参数
        String name = request.getParameter("name");
        //以获取到的请求参数为值,创建一个Cookie对象
        Cookie c = new Cookie("username",name);
        //设置Cookie对象的生存期限
        c.setMaxAge(24*3600);
        //向客户端增加Cookie对象
        response.addCookie(c);
    %>


读取cookie:

<%@ page contentType="text/html; charset=utf-8" language="java" errorPage="">



    读取Cookie


    <%
        //获取本站在客户端上保留的所有cookie
        Cookie[] cookies = request.getCookies();
        //遍历客户端上的每个Cookie
        for(Cookie c : cookies)
        {
            //如果Cookie的名为username,表明该Cookie是需要访问的Cookie
            if(c.getName().equals("username"))
            {
                out.println(c.getValue());
            }
        }
    %>





session对象

session对象代表一次用户会话。一次会话的含义是从客户端浏览器连接服务器开始,到客户端服务与断开为止。(session里的属性必须是可序列化的)

session的作用

通常用于跟踪用户的会话信息,如判断用户是否登录系统。session范围内的属性可以在多个页面的跳转之间共享。
session对象是HttpSession的实例,HttpSession常用的两个方法:

setAttribute(String attName,Object attValue):设置session范围内attName属性的值为attValue

getAttribute(String attName):返回session范围内attName属性的值

表单页面:

<%@ page contentType="text/html; charset=utf-8" language="java" errorPage=""%>



    表单页面


    
书:
水:
人:

处理页面:

<%@ page contentType="text/html; charset=utf-8" language="java"%>
<%@ page import="java.util.*" %>
<%
    //取出session范围的itemMap属性
    Map itemMap = (Map)session.getAttribute("itemMap");
    //如果Map对象为空,则初始化Map对象
    if(itemMap == null)
    {
        itemMap = new HashMap();
        itemMap.put("书",0);
        itemMap.put("水",0);
        itemMap.put("人",0);
    }
    //获取上一个页面的请求参数
    String[] buys = request.getParameterValues("item");
    //遍历数组的各元素
    for(String item:buys)
    {
        //如果item为book,表示书籍
        if(item.equals("book"))
        {
            int num1 = itemMap.get("书").intValue();
            //将书的数量加1
            itemMap.put("书",num1+1);
        }else  if(item.equals("water"))
        {
            int num2 = itemMap.get("水").intValue();
            //将水的数量加1
            itemMap.put("水",num2+1);
        }else  if(item.equals("people"))
        {
            int num3 = itemMap.get("人").intValue();
            //将人的数量加1
            itemMap.put("人",num3+1);
        }else
    }
//将itemMap对象放到设置成session范围的itemMap属性
session.setAttribute("itemMap",itemMap);
%>



    new document


书:<%=itemMap.get("书")%>
水:<%=itemMap.get("水")%>
人:<%=itemMap.get("人")%>

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67779.html

相关文章

  • JSP 学习记录

    摘要:对象具有请求域,即完成客户端的请求之前,该对象一直有效。提交的数据量最多不超过。安全性较低但效率比方式高。适合提交数据量大,安全性高的用户信息。除非本次会话的所有页面都关闭后再重新访问某个或者,将会创建新的会话。 JSP 简介 全名为Java Server Pages,其根本是一个简化的Servlet设计,实现了在Java当中使用HTML标签。JSP是一种动态网页技术标准,也是Java...

    BearyChat 评论0 收藏0
  • 详谈 Filter 过滤器

    摘要:元素用于指定过滤器的完整的限定类名。除此之外,过滤器不会被调用。参数用于访问后续过滤器。还可以为指定目标资源为某个,例如当用户访问时,会执行名字为的,这时会执行过滤器。防止中文乱码过滤器项目使用框架时。 文章首发在CSDN博客,转载请务必注明以下所有链接,否则考虑法律追究责任。 CSDN地址:http://blog.csdn.net/tzs_1041218129/article/det...

    wind5o 评论0 收藏0
  • Servlet&JSP学习笔记(二)

    摘要:一基本语法声明声明语句成员变量或方法声明语句声明局部变量注意区分二者区别。局部变量在每次调用方法时都会重新初始化。注意此时代码是被原封不动地导入,所以变量的作用域仍然在这个中。动作,运行期间的命令广义的拥有私有变量,和等方法的工具类。 JSP(JAVA Server Pages):一种特殊的Servlet,直接在HTML中内嵌JSP代码,由JSP Engine自动转为Servlet代码...

    YJNldm 评论0 收藏0
  • Javaweb Q&A

    摘要:方法的参数不但可以使相对于上下文根的路径,而且可以是相对于当前的路径。如和都是合法的路径。 转发与重定向区别是什么 在调用方法上 转发 调用 HttpServletRequest 对象的方法 request.getRequestDispatcher(test.jsp).forward(req, resp); 重定向 调用 HttpServletResponse 对象的方法 res...

    hiyang 评论0 收藏0

发表评论

0条评论

Flink_China

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<