zoukankan      html  css  js  c++  java
  • 09重点复习

    09重点复习
    1、动态web资源   静态web资源
       Servlet/JSP

       Servlet web.xml
     2、真实路径  虚拟路径

        Servlet (Sun)--GenericServlet--HttpServlet doXXX
        !!Servlet的生命周期,调用过程图(当浏览器访问一个Servlet对象时,服务器可能创建的对象: ServletConfig、可能(第一次)Servlet、request和response必然),知道javaee常用对象的由谁创建、什么时候创建、什么时候销毁。
            ServletContext:服务器启动,web应用加载时创建,当浏览器第一次访问Servlet时,已启动过。
        web容器--tomcat (基于Sun标准的Apache)
        Servlet容器--tomcat
    3、Attribute、parameter、InitParameter的区别,对应的操作方法。
       初始化参数:InitParameter    在web.xml中为Servlet或ServletContext配置的初始化时带有的基本参数  
       请求参数:parameter   浏览器发送过来的请求中的参数信息 
                以上两种:有get,无set和remove
       域属性:Attribute    自己设置      有get、set、remove
    4、ServletContext:域、获取web应用的初始参数、读取资源文件(getRealPath、利用类加载器去加载资源)
        
    !!!四大作用域的生命周期、作用范围 、主要用途。Servlet(JSP)
       ServletContext(application
             整个作用域
             随着web应用加载而创建,随着web应用销毁而销毁
       HttpSession(session
            整个会话。所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个请求响应。(session),而放到会话中的变量,
            request.getSession()创建session。当session超过30分钟没人用销毁、invalidate方法自杀、服务器非正常关闭session销毁。
       request(request
            整个请求链。所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。在这个过程中可能使用forward的方式跳转了多个jsp页面。
            请求开始时创建request对象代表请求,request产生,请求结束request对象销毁,request域销毁。
    pageContext(page域)
           当前jsp页面里。 
            随着JSP页面被访问时创建,访问结束后销毁。从把变量放到pageContext开始,到jsp页面结束。
    5、response
            响应乱码:
                getOutputStream().write("中国".getBytes("utf-8"));------Content-Type
                getWriter().write('中国');-------setCharacterEncoding(""utf-8");Content-Type-----                setContentType("text/html;charset=UTF-8");
           重定向: 
                   response.setHeader("Location", "/Day04/index.jsp");
                   response.sendRedirect("/Day04/index.jsp");

       request
           请求乱码:
                浏览器发送请求参数时,当初浏览器以什么编码打开的表单页面,就用什么编码发送这个页面提交的数据;而 服务器若不指定就使用ISO8859-1打来,造成乱码。
               post: request.setCharacterEncoding(“utf-8”)  //放在getParameter前才有效
               get:   new String(str.getBytes(“ISO-8859-1”),”utf-8”)
                          设置tomcat Connector URIEncoding=“utf-8”
           获取请求参数:
           域:
           转发   包含

    6、Cookie技术:客户端技术
        
    //解决中文乱码
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
     
        //返回多个cookie信息
        Cookie[] cs = request.getCookies();
        Cookie findC = null;
        //cs部位空,才可以增强for循环
        if (cs != null)
        for(Cookie c : cs){
            if ("lastTime".equals(c.getName())) {
                findC = c;
            }
        }
            if (findC == null) {
                response.getWriter().write("这是您第一次访问本网站!");
            } else {
                Long lastTime = Long.parseLong(findC.getValue());
                response.getWriter().write("您上次访问的时间是:" + new Date(lastTime).toLocaleString());
            }
            //缓存最新时间
            Date date = new Date();
            Cookie cTime = new Cookie("lastTime", date.getTime()+"");
            response.addCookie(cTime);
            300个(浏览器容纳)     20个(每个站点)     4KB(最大)
           cookie对象常用方法及其作用 setMaxAge(设置与不设置的区别)、SetPath(若不设置浏览器使用默认值)、SetDomain(设置后浏览器的反应)    
            如何覆盖一个Cookie?
            如何删除一个Cookie?
    7、Session技术:服务器端技术    内存中     
           Session原理(基于cookie),了解如何是同一台计算机中的浏览器公用session(利用session原理自己创建JSESSIONID cookie,设置MaxAge,覆盖自动生成的)/了解禁用cookie下如何使用session(URL重写)

    cookie是客户端技术
    优点:数据保存在客户端,这个信息可以保存很长时间。
    缺点:数据随时有可能被清空,所以cookie保存的数据是不太靠谱的;
    数据被保存在了客户端,随时有可能被人看走,如果将一些敏感信息比如用户名密码等信息存在cookie中,可能有安全问题。

    session是服务器端技术
    优点:数据保存在服务区端,相对来说比较稳定和安全。
    缺点:占用服务器内存,所以一般存活的时间不会太长,超过超时时间就会被销毁。所以 我们要根据服务器的压力和session 的使用情况合理设置session的超时时间,既能保证session的存活时间够用,同时不用的session可以及时销毁减少对服务器内存的占用。
    8、JSP  
            改变了在java中写html的过程变为在HTML中嵌入java代码
            JSP本质上是一个Servlet,在第一访问到时有JSP翻译引擎翻译为Servlet
            模板元素:---out.write("")
            脚本表达式<%= %>----out.print();
            脚本片段:<% %>----不变
            JSP声明<%! %>----类成员
            JSP注释<%-- --%>
            JSP指令
                page---用来通知JSP翻译引擎如何翻译当前JSP
                    session----是否有隐式内置对象
                    errorPage----指定错误提示页面
                    isErrorPage----设置为true后,翻译页面会出现一个exception对象,可直接使用;友好提示错误页面
                    pageEncoding----通知翻译引擎以什么编码打开JSP页面   通知服务器以什么编码发送数据   
                  通知浏览器以什么编码打开数据,而在myeclipse环境下这个属性配为了什么myeclipse自动以什么编码打开文件
                include---用来进行静态包含
                    静态包含:源文件级别的合并多个JSP翻译为一个Servlet。  <%include file="URL"%>
                    动态包含:在输出流级别的合并,对个JSP翻译为各自的Servlet,在输出时进行合并。
                taglib---用来导入标签库
    9、!!!请求转发和重定向
        1.请求重定向的原理:(302 Location)
        2.请求转发的原理:(服务器内部资源流转)
        3.请求重定向和请求转发的不同应用场景
        4.常用的请求重定向和请求转发的实现方法

    10、!!!常考点:静态包含、动态包含的原理,常用的请求包含实现方法
    11、九大内置对象:
            page
            config
            application
            response
            request
            session
            out
            exception
            pagecontext
                    作为入口对象获取其他八大内置对象
                    作为入口操作四大作用域
                    findAttribute(从小到大搜索域)
                    域
                    提供了快捷方法可以用来转发和包含
    12、JSP标签:
               jsp:forward
               jsp:include
               jsp:param
            EL
                1.获取数据
                        获取的数据放在域中,常用,变量、数组、集合、map、
                       javabean的属性----${pageContext.request.contextPath}
                      .[]
                2.执行运算
                        算术运算        比较运算        逻辑运算
                        三元表达式   ${user!=null?user.name : “”}
                        empty---null  “”  list 域
                3.获取常用开发对象(11个内置对象)
                   !pageContext -- 有了它可以很方便的获取jsp页面中的9大隐式对象,对应于JSP页面中的pageContext对象
                   !pageScope -- page域中属性组成的Map,代表page域中用于保存属性的Map对象
                   !requestScope -- request域中属性组成的Map
                   !sessionScope -- session域中属性组成的Map
                   !applicationScope --application域中属性组成的Map     
                    !param -- 所有请求参数组成的Map<String,String>
                   paramValues -- 所有请求参数组成的Map<String,String[]>
                   header -- 所有请求头组成的Map<String,String>
                   headerValues -- 所有请求头组成的Map<String,String[]>
                   !cookie -- 所有cookie信息组成的Map<String,Cookie>
                   initParam -- 所有web应用的初始化参数组成Map
                4.调用java方法
                        会调用jstl提供的fn函数就可以了
    13、JSTL
            c:out    c:set    c:remove
            c:if        c:foreach        c:choose
    14、自定义标签
    15、mysql
    16、jdbc
    17、web开发模式
    ==========================================================================================
    一、请求转发、请求重定向和请求包含
           请求转发和请求重定向区别
                   请求重定向地址栏会发生变化。 请求转发地址栏不发生变化.
                    请求重定向两次请求两次响应。 请求转发一次请求一次响应.
     
            如果需要在资源跳转时利用request域传递域属性(一些参数)则必须使用请求转发;
            如果希望资源跳转后修改用户的地址栏则使用请求重定向;
           如果使用请求转发也可以重定向也可以,则优先使用请求转发,减少浏览器对服务器的访问次数减轻服务器的压力。

           转发之前如果已有数据写给浏览器,浏览器转发失败。
           转发之前如果已有数据写给response缓冲区中但未发送给浏览器,转发成功;但之前写入的数据清空,清空的只是实体内容,响应头不会清空。

            不可以在一个Servlet中转发两次;;
             被包含的Servlet程序不能改变响应消息的状态码和响应头,如果它里面存在这样的语句,这些语句的执行结果将被忽略。
    1. 一.请求重定向
    2. 1.原始方式
    3. response.setStatus(302);
    4. response.setHeader("Locaton","/xxxxxx");
    5. 2.快捷方式
    6. response.sendRedirect("/xxxx");
    7. *3.额外的方式
    8. 1. response.setHeader("refresh","0;url=/xxxx");
    9. 2. <c:redirect>
    10. 二、请求转发
    11. 1.ServletContext.getRequestDispatcher().forward();
    12. 2.request.getRequestDispatcher().forward();
    13. 3.pageContext.forward("");
    14. 4.<jsp:forward>
    15. 三、请求包含
    16. 1.ServletContext.getRequestDispatcher().include()
    17. 2.request.getRequestDispatcher().include()
    18. 3.<%@ include file=""%>
    19. 4.pageContext.include("/index.jsp");
    20. 5.<jsp:include/>
    21. 6.<c:import/>

    getOutputStream和getWriter两个方法互斥。

    http协议--规定浏览器和服务器如何通信
    html--超文本数据的格式                      http规定html 错错错!
    servlet规范--sun定义
    servlet容器--给规范实现
    ============================================================================================
    二、常用地址的写法:
        绝对路径:以/开头的路径就叫做绝对路径,绝对路径在相对于的路径上直接拼接得到最终的路径。
        相对路径:不以/开头的路径就叫做相对路径,相对路径基于当前所在的路径计算的到最终的路径。
        硬盘路径:以盘符开头的路径就叫做硬盘路径。是哪个路径就是哪个路径。没有相对于谁的问题。

        1、虚拟路径: --写虚拟路径时都使用绝对路径
            如果路径是给浏览器用的,这个路径相对于虚拟主机,所以需要写上web应用的名称;
            如果路径是个服务器用的,这个路径相对于web应用,所以可以省写web应用的名称。
          <a href="/Day04/.....">     浏览器
          <form action="/Day04/...">   浏览器
          <img src="/Day04/....">   浏览器
          response.setHeader("Location","/Day04/....");   浏览器    302+Locaction
          response.setHeader("refresh","3;url=/Day04/...");   浏览器
          response.sendRedirect("/Day04/...");   浏览器
          request.getRequestDispathce("/index.jsp").forward();   服务器    
          request.getRequestDispathce("/index.jsp").include();   服务器
     
    1. /Day04/Demo6转发到:
    2. /Day04/index.jsp
    3. 使用绝对路径
    4. request.getRequestDispathce("/Day04/index.jsp").forward();
    5. 若使用相对路径:(分析路径,麻烦,易出错)
    6. request.getRequestDispathce("../index.jsp").forward();
       
      2、 真实路径: --写真实路径时都使用相对路径
            根据原理,具体问题具体分析  
            servletContext.getRealPath("config.properties");//--给一个相对于web应用目录的路径
            classLoader.getResource("../../config.properties");//--给一个相对于类加载目录的路径
    1. @WebServlet("/Demo6")
    2. public class Demo6 extends HttpServlet {
    3. public void doGet(HttpServletRequest request, HttpServletResponse response)
    4. throws ServletException, IOException {
    5. request.getRequestDispatcher("/Day04/index.jsp");//绝对路径
    6. String path = Demo6.class.getClassLoader().getResource("config.properties").toString();
    7. System.out.println(path);
    8. //在src下新建config.properties,与包同路径下
    9. /输出:file:/F:/tomcat8/webapps/Day04/WEB-INF/classes/config.properties
    10. }

            File file = new File("config.properties");//--相对于程序的启动目录,web工程下面找
            new InputStream("config.properties");//--相对于程序的启动目录
  • 相关阅读:
    SG函数(斐波那契博弈) Fibonacci again and again
    poj
    威佐夫博弈
    Java——类的定义
    链队列——出入队列
    Java——写一个求和 “方法”
    巴什博弈 HDU-1846
    链栈——入栈和出栈
    java——基本数据类型
    JAVA——桌球游戏(动画)
  • 原文地址:https://www.cnblogs.com/angel11288/p/bb5eee9269ab35081fe5a8039a202ad5.html
Copyright © 2011-2022 走看看