09重点复习

it2026-05-09  6

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.获取常用开发对象(1 1个内置对象)                 ! 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.原始方式 response.setStatus(302); response.setHeader("Locaton","/xxxxxx"); 2.快捷方式 response.sendRedirect("/xxxx"); *3.额外的方式 1. response.setHeader("refresh","0;url=/xxxx"); 2. <c:redirect>二、请求转发 1.ServletContext.getRequestDispatcher().forward(); 2.request.getRequestDispatcher().forward(); 3.pageContext.forward(""); 4.<jsp:forward>三、请求包含 1.ServletContext.getRequestDispatcher().include() 2.request.getRequestDispatcher().include() 3.<%@ include file=""%> 4.pageContext.include("/index.jsp"); 5.<jsp:include/> 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();     服务器   /Day04/Demo6转发到:/Day04/index.jsp使用绝对路径 request.getRequestDispathce("/Day04/index.jsp").forward(); 若使用相对路径:(分析路径,麻烦,易出错) request.getRequestDispathce("../index.jsp").forward();       2、 真实路径: --写真实路径时都使用相对路径         根据原理,具体问题具体分析            servletContext.getRealPath("config.properties");//--给一个相对于web应用目录的路径         classLoader.getResource("../../config.properties");//--给一个相对于类加载目录的路径 @WebServlet("/Demo6")public class Demo6 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getRequestDispatcher("/Day04/index.jsp");//绝对路径 String path = Demo6.class.getClassLoader().getResource("config.properties").toString(); System.out.println(path); //在src下新建config.properties,与包同路径下 /输出:file:/F:/tomcat8/webapps/Day04/WEB-INF/classes/config.properties }         File file = new File("config.properties");//--相对于程序的启动目录,web工程下面找         new InputStream("config.properties");//--相对于程序的启动目录

转载于:https://www.cnblogs.com/angel11288/p/bb5eee9269ab35081fe5a8039a202ad5.html

相关资源:武汉大学Gis期末真题和复习重点整理.zip
最新回复(0)