jsp(2)

JavaBean简单介绍
        JavaBeans就是符合某种特定的规范的java类,使用Javabeans的优点是解决代码反复编写,
        降低代码冗余,功能区分明白,提高了代码的维护性
  JSP动作元素
     JSP动作元素,动作元素为请求处理阶段提供信息。动作元素遵循XML元素的语法,有一个包括元素名
     的開始标签,能够有属性、可选的内容、与開始标签匹配的结束标签。


   jsp动作标签
    <jsp:useBeans>
    作用:在jsp页面中实例化或者在指定范围内使用javabean:
    <jsp:useBean id = "标识符" class = "java类名" scope = “作用范围”/>
    <jsp:setProperty>
    作用:给已经实例化的JavaBean对象的属性赋值,一共同拥有四种形式
    <jsp:getProperty>
    作用:获取指定JavaBean对象的属性值
    Javabean的四个作用域范围
    说明:使用useBeans的scope属性能够用来指定javabean的作用范围
    page 仅在当前页面有效
    request 能够通过HttpRequest.getAttribute()方法取得javaBean对象
    session 能够通过HttpSession.getAttribute()方法取得JavaBean对象
    application 能够通过application.getAttribute()方法取得javabean对象

JSP状态管理
   http协议的无状态性
     无状态是指,当浏览器发送请求给server的时候,server响应client请求。
     可是当同一个浏览器再次发送请求给server的时候,server并不知道它就是
     刚才那个浏览器
     简单的说。就是server不会去记得你。所以就是无状态协议
  保存用户状态的两大机制
    Session、Cookie
    Cookie是Webserver保存在client的一系列文本
    Cookie的作用
      对特定对象的追踪
      保存用户网页浏览记录与习惯
      简化登录
      安全风险:很easy泄露用户的信息
   JSP中Cookie的使用
   创建: Cookie newCookie = new Cookie(String key,Object value);
   写入: response.addCookie(newCookie);
   读取: Cookie[] cookies = request.getCookies();
   经常用法
     void setMaxAge(int expiry) 设置cookie的有效期,秒为单位
     void setValue(String value) 在cookie创建后。对cookie进行赋值
     String getName() 获取cookie的名称
     String getValue() 获取cookie的值
     int getMaxAge() 获取cookie的有效时间。秒为单位

     案例:

 <%
      request.setCharacterEncoding("utf-8");
       String[] isUseCookies = request.getParameterValues("isUseCookie");
       if(isUseCookies!=null&&isUseCookies.length>0){
         //这样做能够解决cookie中不能保存中文的问题
          String username = URLEncoder.encode(request.getParameter("username"),"utf-8");
	  String password = URLEncoder.encode(request.getParameter("password"),"utf-8");
	  Cookie usernameCookie = new Cookie("username",username);
	  Cookie passwordCookie = new Cookie("password",password);
	  usernameCookie.setMaxAge(864000);
	  passwordCookie.setMaxAge(864000);
	  response.addCookie(usernameCookie);
	  response.addCookie(passwordCookie);
       }else{
          Cookie[] cookies = request.getCookies();
	  if(cookies != null &&cookies.length > 0){
	  for(Cookie c : cookie){
	    if(c.getName().equals("username")||c.getName().equals("password")){
	       c.setMaxAge(0);
	       response.addCookie(c);
	    }
	  }
	  }
       }
       %>

Session与Cookie的对照
   session在server端保存用户信息
   cookie在client保存用户信息
   session中保存的是Object类型
   cookie中保存的是String类型
   session会随会话的结束而将其存储的数据销毁
   cookie能够长期保存在client
   session经常使用于保存重要的信息
   cookie保存不重要的用户信息
 
 指令与动作
    include指令
       语法:<%@include file="URL"%>
    forward动作
      <jsp:forward page="URL"/>
      等同于
        request.getRequestDispatcher("/url").forward(request,response);
   param动作
       <jsp:param name="參数名" value="參数值">
       经常与<jsp:forward>一起使用,作为其的子标签


原文地址:https://www.cnblogs.com/zhchoutai/p/7356873.html