首页 > 代码库 > session和jsp

session和jsp

1.将商品添加到购物车

点击加入购物车提交到servlet,在servlet将购物的商品存入到session
创建一个map集合,key是商品的名称,value是数量
代码:

public class CartServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //接收商品名称
        String name = new String(request.getParameter("name").getBytes("iso-8859-1"), "utf-8");
        //创建map集合用于保存购物信息
        Map<String, Integer> map = (Map<String, Integer>) request.getSession().getAttribute("cart");
        //如果没有这个map就创建一个
        if(map == null) {
            map = new LinkedHashMap<String, Integer>();
        }
        //判断购物车中是否已经买了该物品
        if(map.containsKey(name)) {
            Integer count = map.get(name);
            count++;
            map.put(name, count);
        }else {
            map.put(name, 1);
        }
        //保存到session域中
        request.getSession().setAttribute("cart", map);
        
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

2.session

session的创建:服务器第一次调用getSession()创建session
三种情况销毁session:
1.session过期,默认过期时间为30分钟
2.非正常关闭服务器,如果正常关闭session序列化到硬盘
3.手动调用session.invalidate
session的作用范围:多次请求,一次会话

3.jsp

java服务器端的页面
执行jsp:jsp翻译成servlet,编译这个servlet的类,生成class文件,得到执行

4.jsp的脚本

<%! %>:翻译成servlet中的成员内容,定义变量,方法,类
<% %>:翻译成servlet中service方法内部的内容,定义类,变量
<%= %>:翻译成servlet中service方法中out.print();

jsp的注释:<%--jsp的注释--%>

 

5.jsp中的三个指令

language:jsp脚本中使用的语言
contentType:设置浏览器打开这个jsp的时候采用的默认的字符集编码
pageEncoding:设置文件保存到本地硬盘,以及生成servlet后,servlet保存到硬盘上的编码
import:在jsp中引入类对象,但是import可以出现多次
extends:设置jsp翻译成servlet后继承的类,默认值:org.apache.jasper.runtime.HttpJspBase,这个值要想修改,这个类必须是HttpServlet的子类
autoFlush:设置jsp的缓存自动刷出,true:自动刷出
buffer:设置jsp的缓冲区的大小,默认8kb

* 设置全局的错误友好页面:
* 在web.xml中设置:

  <error-page>
      <error-code>404</error-code>
      <location>/404.jsp</location>
  </error-page>
  <error-page>
      <error-code>500</error-code>
      <location>/500.jsp</location>
  </error-page>

7.jsp的内置对象

* request HttpServletRequest getParameter(),setAttribute(String name,Object value);
* response HttpServletResponse setHeader(String name,String value);getOutputStream();getWriter();
* session HttpSession setAttribute();getAttribute();
* application ServletContext setAttribute();getAttribute();
* page Object toString();wait();
* pageContext PageContext setAttribute();getAttribute();
* config ServletConfig getServletName();getServletContext();
* out JspWriter write(),print();
* exception Throwable getMessage(),getCause(); 设置isErrorPage=”true”

page内置对象 :真实对象是Object,就是JSP翻译成Servlet后的类的引用.

8.jsp的四个域中存取数据

JSP的四个域范围:
* PageScope :当前页面中有效. pageContext PageContext
* RequestScope :一次请求范围. request HttpServletRequest
* SessionScope :一次会话范围. session HttpSession
* ApplicationScope :应用范围 application ServletContext

 

9.jsp的动作标签

<jsp:forward /> :用于页面的转发.
<jsp:include /> :用于页面的包含.(动态包含)
<jsp:param /> :用于带有路径的标签下,传递参数.
<jsp:useBean /> :用于在JSP中使用JavaBean.
<jsp:setProperty /> :用于在JSP中向JavaBean设置属性的.
<jsp:getProperty /> :用于在JSP中获得JavaBean的属性.

 

session和jsp