发表于: 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由服务器生成,通过response将cookie写到浏览器,保留在浏览器上,下一次访问的时候浏览器根据一定的规则携带cookie
常规:
创建cookie:new Cookie(String key, String value)
写到浏览器:response.addCookie(Cookie c)
获取cookie:request.getCookies()
Cookie的常用api:
getName():获取cookie的key
getValue():获取指定cookie的值
setMaxAge(int seconds):设置cookie在浏览器端存活时间
setPath(String path):设置cookie的路径
9) Session——服务器端会话技术
服务器端会话技术,底层依赖于cookie,第一次访问服务器的时候,服务器自动获取jsessionid:
能获取到id:使用id去服务器中查找有无此session
若查找到,将数据保存,将当前session的id返回给浏览器
若查找不到,创建一个
获取不到id:创建一个session,将当前session的id返回给浏览器
常用方法:
HttpSession request.getSession():获取一个session
session.invalidate():销毁session
二、 明天计划的事情
1)java集合框架的复习
三、 遇到的问题
四、 收获
1)终于稍微有时间复习了,整理了笔记,特此贴上
评论