发表于: 2017-09-14 23:14:59

3 708


一、    今天完成的事情

1)        复习servlet

1) servlet体系结构

Servlet:接口

    常用方法:

    void init(ServletConfig config):初始化

    void service(ServletRequest request, ServletResponse response):处理业务逻辑

    void destroy():销毁servlet

GenericServlet:抽象类

    除了service方法没有实现,其它方法都实现了

HttpServlet:抽象类

    实现了service方法,把参数进行了强制类型转换,调用了重载的service方法。

    重载的service方法获取请求的方法,根据请求方式的不同调用相应的doXxx()方法,如doGet()doPost()

自定义Servlet:继承了HttpServlet

 

2) servlet生命周期

servlet是多线程单实例。一次请求来的时候,服务器会判断是否第一次访问,如果是第一次访问,将会创建servlet对象并调用init()方法进行初始化操作,而后调用service完成此次请求的业务逻辑。以后每当请求来的时候服务器会调用一次service()方法。当服务器关闭或servlet被移除时,服务器调用destroy()方法实现销毁操作。

void init(ServletConfig config)

    初始化

    执行者:服务器

    执行次数:一次

    执行时机:默认第一次访问的时候

void service(ServletRequest request, ServletResponse response)

    服务,业务逻辑

    执行者:服务器

    执行次数:请求一次执行一次

    执行时机:请求来的时候

void destroy()

    销毁

    执行者:服务器

    执行次数:一次

    执行时机:服务器正常关闭或servlet被移除的时候

 

3) servlet中的域对象

ServletContext:

    上下文,一个项目的引用,代表整个项目,可以管理整个项目。

    当项目启动的时候,服务器会为该web项目创建一个ServletContext对象,当项目被移除或者服务器关闭的时候,ServletContext销毁。

    作用:获取全局的初始化参数;共享资源;获取文件资源;

    常用方法:xxxAttribute();

request:

    创建:每一次请求来的时候

    销毁:其请求的响应生成时候

    作用:使用此次请求中的数据

    请求转发:request.getRequestDispatcher(“内部路径”).forward(request, response);

session:

    创建:第一次调用request.getSession()的时候

    销毁:

服务器非正常关闭;

session超时:默认30min

手动销毁:session.invalidate()

                        作用:存放私有数据

   

4) request——请求

作用:获取浏览器发送过来的数据

组成:请求行 请求头 请求体

请求行格式:请求方式 请求资源 协议/版本

重要方法:

    String getMethod():获取请求方式

    String getContextPath():获取项目名称

    String getParameter(String key):获取一个值

    String[] getParameterValues(String key):获取多个值

    Map<String, String[]> getParameterMap():获取所有的参数名称和值

request参数的中文乱码原因:

    对于get请求,参数追加到地址栏会使用utf-8编码,服务器(tomcat7)却使用了iso8859-1解码;

    对于post请求,参数放置在请求体中,服务器获取请求体后使用iso8859-1编码;

解决request中文乱码:

    一般来说,使用通用方式解决:

new String(request参数.getBytes(“指定编码”), “utf-8”);

    针对于post请求:

        request.setCharacterEncoding(“utf-8”);

5) response——响应

作用:从服务器往浏览器写东西

组成:响应行 响应头 响应体

响应行格式:协议/版本 状态码 状态码说明

重要方法:

    sendRedirect(绝对路径):重定向

    Writer getWriter():获取字符流

    setContentType(“text/html;charset=utf-8”):设置响应到浏览器的字符集为utf-8

6) 请求转发和重定向的区别

请求转发发生在服务器内部,重定向是从浏览器发送

从而说明—> 请求转发发送一次请求,重定向发送两次请求

从而说明—> 请求转发地址栏不变,重定向地址栏会发送改变

并且说明—> 请求转发可以使用同一个request域对象,重定向不存在request域对象

此外,请求转发是request的方法,重定向是response的方法;

请求转发不可以请求站外资源,重定向则可以。(这点暂且不懂)

 

7) Jsp

Jsp,全称Java Server Pages,即Java服务器页面,运行在服务器端,本质上是一个servlet,通过服务器(tomcat)解析产生的.java文件和.class文件保留在tomcat/work目录下。

                    Jsp执行流程:

                          1.浏览器发送请求,访问jsp

                         2.服务器接受请求,jspServlet自行查找对应的jsp文件

                         3.服务器将jsp页面“翻译”成.java文件

                         4.jvm.java文件编译成.class文件

                         5.服务器运行.class文件,生成动态的内容

                         6.将内容发送给服务器

                         7.服务器组成响应信息,发送给浏览器

Jsp脚本:

    <% %>:编写java代码片段

    <%= %>:输出表达式,相当于out.print();

    <%! %>:声明成员变量

Jsp指令:

    include指令:静态包含,将其它页面或者servlet的内容包含进来,一起编译运行,常用于包含重复的代码块。

    格式:<%include file=”相对路径或者内部路径”%>

    例如:<%include file=”/jsp/head.jsp”%>

    taglib指令:导入标签库

    格式:<%@taglib prefix=”前缀名” uri=”名称空间” %>

    导入后使用:<前缀名:标签 …>

    例如:<c:if test=””></c:if>

Jsp内置对象(9)

    out request response session exception page config application pageContext

Jsp的域对象:

    application 整个项目

    session     一次会话

    request     一次请求

    pageContext 一个页面

 

8) Cookie——浏览器端会话技术

cookie由服务器生成,通过responsecookie写到浏览器,保留在浏览器上,下一次访问的时候浏览器根据一定的规则携带cookie

常规:

                        创建cookienew Cookie(String key, String value)

                        写到浏览器:response.addCookie(Cookie c)

                        获取cookierequest.getCookies()

                    Cookie的常用api

                        getName():获取cookiekey

                        getValue():获取指定cookie的值

                        setMaxAge(int seconds):设置cookie在浏览器端存活时间

                        setPath(String path):设置cookie的路径

 

9) Session——服务器端会话技术

服务器端会话技术,底层依赖于cookie,第一次访问服务器的时候,服务器自动获取jsessionid

    能获取到id:使用id去服务器中查找有无此session

        若查找到,将数据保存,将当前sessionid返回给浏览器

        若查找不到,创建一个

    获取不到id:创建一个session,将当前sessionid返回给浏览器

                            常用方法:

                                HttpSession request.getSession():获取一个session

                                session.invalidate():销毁session

二、    明天计划的事情

           1java集合框架的复习

三、    遇到的问题

四、    收获   

           1)终于稍微有时间复习了,整理了笔记,特此贴上





返回列表 返回列表
评论

    分享到