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协议的无状态性
     无状态是指,当浏览器发送请求给服务器的时候,服务器响应客户端请求。
     但是当同一个浏览器再次发送请求给服务器的时候,服务器并不知道它就是
     刚才那个浏览器
     简单的说,就是服务器不会去记得你,所以就是无状态协议
  保存用户状态的两大机制
    Session、Cookie
    Cookie是Web服务器保存在客户端的一系列文本
    Cookie的作用
      对特定对象的追踪
      保存用户网页浏览记录与习惯
      简化登录
      安全风险:非常容易泄露用户的信息
   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在服务器端保存用户信息
   cookie在客户端保存用户信息
   session中保存的是Object类型
   cookie中保存的是String类型
   session会随会话的结束而将其存储的数据销毁
   cookie可以长期保存在客户端
   session常用于保存重要的信息
   cookie保存不重要的用户信息
 
 指令与动作
    include指令
       语法:<%@include file="URL"%>
    forward动作
      <jsp:forward page="URL"/>
      等同于
        request.getRequestDispatcher("/url").forward(request,response);
   param动作
       <jsp:param name="参数名" value="参数值">
       常常与<jsp:forward>一起使用,作为其的子标签


你可能感兴趣的:(jsp(2))