Servlet主要知识点
什么是Servlet:
它是一个基于Web服务器的简单Java应用程序,用于处理来自客户端发送过来的数据请求,通常使用HTTP协议。
Servlet 就是Sun公司提供的一个动态网页开发技术。
Servlet的作用:
用来处理从客户端游览器发送的请求,并且可以对请求作出响应
Servlet生命周期
Servlet生命周期的四个阶段的执行时机
阶段一:实例化 调用ServletContext的构造器生成一个特定的Servlet实例的过程
阶段二:初始化 在初始化阶段,Init()方法会被调用
第三阶段:就绪状态,在Servlet完成初始化操作后将进入能够处理请求的状态,并调用服务方法service(req, res)。
第四阶段:当ServletContext停止或重新启动时会触发对ServletContext的销毁操作
Servelt****配置
设置Servlet在服务器启动的时候被创建好
1 =0,表示容器启动时就会被创建,
<0,或未设置,代表servlet被请求时被执行
0.值越小,启动的时机就越早
Url-patten****配置
共有三种:
完全路径匹配
目录匹配/通配符匹配:以/开始需要以 *元素
例如:/. /aaa/. /aaa/bbb/*
后缀匹配:不能以/开始。可以以*开始的,目录匹配后后缀匹配不能混合使用
例如*.do *.action
错误的写法 : /*.do
依次是 完全目录> 目录匹配 > 后缀匹配
ServletConfig****对象
作用:获得servlet配置信息
ServletConfig cfg = getServletConfig();
获取init-param参数值
String getServletName(); ---获得Servlet在web.xml中配置的name的值
String getInitParameter(String Name); ---获得Servlet的初始化参数的
Enumeration getInitParameterNames(); ---枚举所有Servlet的初始化参数名称
String getServltContext(); ---获得servletContext对象
请求方式
get****请求
- 在地址看输入一个地址
- 点击页面中的链接
- 表单的默认提交方式
Post****请求:
将表单的Method属性设置为POST时,游览器会发送POST请求
get和post****的区别:
Get的提交的参数会显示到地址栏上,而Post不显示
Get往往是有大小限制的,而Post没有大小的限制。
Get没有请求体,而Post有请求
ServletRequest****接收参数
HttpServletRequest****对象,游览器发来请求,提交数据到服务器端
**String);**用于接收一个名称对应一个值的数据。
**String数组 getParameter(String名称 name, ParameterValues values) --- **用于获取一个名称对应的数据值集合。
**Map getparameterMap();****---****用于捕获表单提交的所有数据。该Map对象的键对应于表单提交参数的名称,并记录了相关联的数据信息。其中map记录了键值对的数量或其他相关信息。
value****是提交参数的值
Enum getParameterNames() --- 返回所有字段值
接收中文乱码
乱码的产生:客户端编码与服务器解码不一致
解决Get请求时的乱码问题
服务器端:
String username= request.getparameter("username");
Username= new String (username.getBytes(iso-8859"),"utf-8");
请特别注意以下几点:首先,在tomcat8之后,默认情况下get命令会将文件默认编码设置为utf-8;无需额外处理编码设置,请确保使用charset=utf-8即可。
客户端:
< meta http-equiv="content-type" content="text/html;charset=utf-8">
解决post请求时的乱码问题
服务器端
Request.setCharacterEncoding("utf-8");
Response.setContentType("text/html**;**character=utf-8");
ServletRequest对象
请求方式:
Get 请求:
在地址栏中输入一个地址
点击页面中的链接
表单的默认提交方式
Post 请求:
将表单的Method属性设置为Post时,游览器会发送Post请求
Get 与 Post的区别:
Get的提交参数会显示到地址栏上,而Post不显示
Get 往往有大小限制,而Post没有大小写的限制
get没有请求体,而Post有请求
服务器做出响应
HttpServletResponse对象,服务器端,接受完请求,返回数据给客户端
解决向页面输出中文乱码:
Response.setContentType("text/html; charset = utf-8");
setContentType()有两个作用 :
通知容器,在调用out.println方法输出时,使用指定的字符集
创建一个名为content-type的消息头,并向浏览器发送相关信息
获得输出流
PrintWriter out = response.getWriter();
发送数据
Out.println("html代码");
// 使用httpServletResponse 对象 响应数据到客户端
// 解决输出中文乱码
//response.setContentType("text/html;character = utf-8 ");
response.setContentType("text/html;charset = utf-8 ");
PrintWriter out = response.getWriter();
out.println("
" + "hello:" + username + "
");ServletResponse对象
重定向
什么是重定向?
服务端发送给浏览器一个包含302状态码响应及一个location字段(其值为指定的一个网络地址),通常称为重定向目标。当浏览器接收到此响应时,会立即发送请求至指定的重定向目标。
如何重定向?
Response.sendRedirect(String url)
重定向特点**:**
- 重定向地址可能指向任何位置。
- 在发生重定向后, 访问者所在的浏览器会自动更新其访问路径。
在重定向过程中涉及的web组件并不包含同一个request和response对象

