A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

[我的日记] web day15

© kuqi3712 中级黑马   /  2018-1-26 21:36  /  736 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Session:
        Cookie本身是有大小和数量限制的(保存到客户端),Session保存在服务器端(SessionID通过cookie传到服务器端,读取的时候通过cookie去取,然后通过SessionID打开空间,本身是基于cookie实现的).
        获得Session
                request.getSession();
                Session也是域对象
                何时创建:服务器端第一次调用getSession()时创建
                何时销毁:关浏览器Session没有销毁(关浏览器cookie销毁了,再次打开浏览器的时候SessionId的cookie被销毁
                所以服务端会创建一个新的SessionID)
                1.Session过期了,默认过期时间30分钟(tomcat中可以设置 conf\web.xml <session-config><seesion-timeout>标签)
                2.非正常关闭服务器terminate,如果正常关闭(stop the server)会序列化存储到硬盘
                3.销毁调用Session.invalidate();
                作用范围:多次请求(一次会话)
       
        用Session保存用户登陆数据,在登陆成功后给Session赋值
        request.getSession().setAttribute("existUser", existUser);
        要需要登陆才能访问的页面上 获取名为existUser的全局变量,并做出响应的判断
       
        用Seesion做验证码
                1.生成验证码
                2.将生成验证码的随机的四个字符保存到Session里面.
                3.输入验证码提交后与Session里面的验证码做比较.
                4.将Session中保存的验证码清空.
                5.抗锯齿
       
JSP:
                数据库中存放了很多商品信息,将商品信息显示到jsp  
                1.什么是jsp(java service page java服务器页面)
                JSP=HTML+Java代码
                JSP的脚本
                        <%! %> 成员内容:可以定义变量,类,方法 ,存在线程安全
                        <%  %> 翻译成service方法内部,类,变量,java代码
                        <%= %> Service方法中的out.print()
                JSP会被编译成Servlet,然后生成Class文件
               
                JSP的注释(了解):
                可以写 HTML的注释<!-- -->,
                           java代码<%//,/*+enter,/**+enter %>的注释(必须在<%%>内),
                           JSP的注释<%-----%>只存在于jsp的源代码中,在翻译成Servlet后,JSP的注释就会清除除掉
                JSP的指令:
                        指令的语法:
                       
                        1.<%@ 指令名称 属性名称="属性值" ....%>
                       
                        2.page,include,taglib
                       
                        3.JSP的 page指令:<%@ page%> 设置jsp
                       
        page指令:
                        1.language:JSP脚本中使用的语言.现在至呢个写java
                 (重要)        2.<%@page contentType="text/html;charset=UTF-8"%> 设置浏览器打开JSP的时候默认字符集的编码
                (重要)          <%@page pageEncoding="UTF-8"%> 用来设置文件保存到本地硬盘,已经生成Servlet后保存到硬盘的编码(默认是GBK的)
                (重要)          <%@page import="com.blue.domain.User"%>  import 导入java的包,可以出现多次,在jsp中用ALT+/导包
                          
                          extends:设置jsp被翻译成Servlet类后继承的类,默认值是org.apache.jasper.runtime.HttpJspBase
                          如果要修改,那么这个类必须是HttpServlet的子类或者HttpServlet.
                          
                          auotoFlash:设置JSP的缓存自动刷出,默认为true
                          buffer:设置JSP的缓存大小,默认8kb ,这两个参数一般不做修改.
                          session:设置在jsp中是否可以直接使用session对象,默认是可以直接使用的
                         
                          isELIgnored:设置在JSP中是否忽略 EL表达式,默认false,不忽略
                          EL: ${ 表达式 }
                       
                          errorPage:  如果出错以后要取跳转的页面,isErrorPage,false,不显示异常信息,true显示错误信息
                          isErrorPage:一起使用设置友好页面,
                          
                          (重要)通常会设置一个全局的友好页面,在web.xml中设置
                          errorPage优先度高于全局
                          
                                <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>
                          
                               
                          
                       
        include指令:用来指示JSP去包含其他页面.
                把相同的内容提取到一个页面,在用的时候包含该页面.可以节省代码.
                叫静态包含
                <% include file="相对路径" %>       
                       
        taglib指令:
                指示JSP引入标签库
                <%@ taglib url="标签库的路径" prefix="标签的别名"%>       
                       
        (重要)JSP的内置对象:
                JSP九大内置对象(相当于变量名):        真实类型                  常用方法
                        request                                                HttpServletRequest                getParameter(),setAttribute();
                        response                                        HttpServletResponse                setHeader(),sendRedirect();getOutputStream();getWriter()
                        session                                         HttpSession                                setAttribute();getAttribute();
                        application                                        ServletContext                        setAttribute();getAttribute();
                        page                                                Object                                        toString();equals();wait();
                        pageContext                                        PageContext                                setAttribute();getAttribute();
                        config                                                ServletConfig                        getServletName();getServletContext();
                        out                                                        JspWriter                                write(),print()
                        exception                                        Throwable                                getMessage(),getCause();        需要设置isErrorPage 为true
                       
                        page内置对象                                Object,就是JSP编译成Servlet后的类的引用
                        page中没有setAttribute ,可以通过pageContext在page域中存数据
                       
                        out内置对象                                        out和response.getwriter()不是同一个对象
                                                                                out真实对象是JspWriter
                                                                                response.getwriter()真实对象是printWriter
                                                                               
                                                                                JspWriter缓冲区的内容会先!追加!(添加到后面)到response(PrintWriter)缓冲区中,
                                                                                由PrintWriter汇总后再拿到页面显示
                                                                                因此response.getwriter()中的内容会优先显示
                                                                                但是response.getwriter().println中的内容在运行的时候会直接被拿到jsp的最顶端(最上面)
                                                                               
                                                                                jsp中的标签也是进入JspWriter缓冲区
                                                                                <%= %>相当于out
                                                                               
        (重点)pageContext内置对象       
                主要由2个功能
                1.通过该对象获得其他八个内置对象.编写通用性代码或者框架的时候
                        pageContext.getRequest();
                        pageContext.getResponse();
                        ....
                2.可以向jsp的四个域中存取数据.
                        四个域:                                        四个域的有效范围                              使用哪个对象存取数据      真实对象
                                PageScope                                当前页面                                                                        pageContext                            pageContext
                                RequestScope                         一次请求范围                                                                Request                                        HttpServletRequest
                                SessionScope                         一次会话范围                                                                Session                                        HttpSession
                                ApplicationScope                应用范围(整个工程就是ServletContext)                Application                                ServletContext
                               

                pageContext中的setAttribute(String s,Object o,int c)方法有一个重载 其中int是域,是一个常量值,用pageContext.PAGE_SCOPE
                getAttribute也有一个类似的重载
                c 为pageContext.PAGE_SCOPE时该方法等价于
                pageContext.setAttribute(String s,Object o)
                pageContext中还有一个findAttribute()方法,用来查找值,从4个域中获取
                顺序时从PageScope-RequestScope-SessionScope-ApplicationScope
               
                JSP的动作标签:
                用于简化代码编写:
               
                <jsp:forword page="url"/>用于页面的转发
                <jsp:include/>用于页面的动态包含,动态包含与静态包含的区别:<%@include%> <jsp:include>  
                <%@include%>相当于代码的copy,拿完之后会一块翻译(只会翻译成一个Servlet)
                <%@include file="xxx.xx"%>
               
                <jsp:include>会生成多个Class并执行,把每个页面执行的结果  拼在一起(只拼接了显示出来的页面,如果各个页面中包含单独的<%%>将不会被执行)
                <jsp:include page="xx.xx">
               
                <jsp:param/>  用于带路径的标签下传递参数,通常与        <jsp:forword page="url"/>一起使用
                <jsp:useBean/>在jsp中使用javaBean
                <jsp:useBean id="对象名" class="类的全路径" scope="page">
                        如果page中没有就new一个对象放到page,如果有就直接用
                </jsp:useBean>
               
                <jsp:setProperty/>在jsp中设置javaBean
               
                <jsp:setProperty property="成员变量名" name="对象名"/>
                <jsp:setProperty property="*" name="对象名"/>给所有成员变量赋值
                <jsp.getProperty/>在jsp中获取javaBean
               

1 个回复

倒序浏览
温故而知新    加油哦    
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马