Servlet
访问web资源路径
项目名称:myweb
资源文件:demo
http://localhost:8000/myweb/demo
http:协议
localhost:本机
8000:Tomcat服务器端口
Myweb:项目名称
Demo:资源名称
访问web资源详细流程
1.http协议:使用浏览器访问
2.localhost:确定访问资源所在的计算机位置
3.8000:确定访问资源所在的软件
4.Myweb:确定项目
5.Demo:资源名称
HTTP协议
如果没有HTTP协议:
每一个浏览器都有自己的数据传输格式
http协议:统一数据传输格式
浏览器向服务器拿数据:请求
服务器向浏览器发送数据:响应
HTTP1.1:浏览器发送请求到服务器,并且不会断开连接
HTTP1.0:浏览器只会发送一次请求到服务器,立马断开连接
状态代码:
200:请求成功,响应成功
404:请求路径错误
500:服务器端错误
请求方式
Get、post
HTTPServletRequest:请求对象
负责保存请求时发送的数据
Get
GET /JavaEe/Demo1 HTTP/1.1---------请求行
Host: localhost:8080---------------请求头
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://localhost:8080/JavaEe/Servlet1.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
1.请求行
2.请求头
缺陷:
1.不安全
2.发送数据大小有限制
因为请求参数通过请求行发送的
Form表单:get/post
A标签:get
通过地址栏访问:get
Post
POST /JavaEe/Demo1 HTTP/1.1---------请求行
Host: localhost:8080---------------请求头
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://localhost:8080/JavaEe/Servlet1.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
----空格
Username=guangtoudsb&password=dsb ----实体内容
特点:
1.数据安全
2.对数据大小不限制
Get和post的区别:
Get:
1.数据不安全
2.通过请求行发送数据
3.对数据大小有限制
Post:
1.数据安全
2.通过实体内容发送
3.对数据大小无限制
Servlet详细介绍
含义:动态资源(运行在服务器端的程序)
一个类继承了HTTPServlet,那么该类我们叫它servlet
作用:
1.接收数据
Servlet中的方法
1.构造器()-----构造器
2.init()--------初始化
3.service()-----服务
4.destroy()-----销毁
5.doGet()-----专门处理get请求方式
6.doPost()----专门处理post请求方式
不管访问多少次servlet(动态资源),构造器和init方法只会执行一次,而且是第一次执行
Servlet生命周期
1.用户在浏览器中输入url地址访问资源文件
2.服务器接收到url,进入到该项目的web.xml中
3.在web.xml中进行url-pattern和访问资源名称进行匹配
4.通过url-pattern获取对应的servlet-name
5.通过servlet-name匹配servlet标签中servlet-name
6.通过servlet-name获取对应的servlet-class
7.服务器创建servlet对象
8.服务器调用构造器
9.服务器调用init方法
10.服务器调用service方法,根据请求方式调用doGet、doPost
11.服务器响应数据到浏览器
12.服务器调用销毁方法
创建对象提前
demo2
cn.com.hc.demo.Demo_2
1
问题:
1.web.xm文件谁加载的?
答:Tomcat服务器加载的
2.Servlet对象谁创建的?
答:Tomcat服务器创建的
3.Servlet中的方法谁调用的?
答:Tomcat服务器调用的
4.Servlet容器是什么?
答:Tomcat服务器
5.为什么叫做Servlet容器?
答:因为Tomcat服务器中有一个内存专门存储servlet对象
当第一次发送请求时,在内存中进行查询是否为对应的Servlet对象,如果有,直接使用,没有创建
HttpServletRequest
请求对象
浏览器发送数据给服务器
作用:负责保存请求参数
方法:
1.getParameter(“参数名”) 根据参数名获取数据
2.getparameterValues(“参数名”) 根据参数名获取数据数组
请求乱码
req.setCharacterEncoding(“utf-8”);
HTTPServletResponse
响应对象(服务器发送数据给浏览器)
方法:
GetWrite() 字符流
GetoutputStream() 字节流
响应格式
HTTP1.1 200
1.Content-Length:
14
2.Date:
Tue, 03 Sep 2019 03:40:01 GMT
响应乱码
//设置响应编码集
response.setContentType(“text/html;charset=utf-8”);
请求转发
Request.getRequestDispatcher(“servlet”).forward(请求对象,响应对象)
Request.setAttribute(“参数名”,”参数值”)
Request.getAttribute(“参数名”)
注意:
1.请求转发时必须把请求对象转发出去
2.请求转发只能转发给动态资源(servlet、jsp)
3.请求转发时,可以传递数据
4.浏览器只发送了一次请求
响应重定向
response.sendRedirect(“duminjun”);
注意:
1.浏览器发送了多次请求
2.响应重定向可以响应任何资源(静态、动态)
3.响应过程中不能传递数据
URL-Pattern
http://localhost:8000/JavaWeb/demo
/名称
通配符
/* 匹配所有
伪静态
*.html
*.do
*.action
/名称.html
/名称.do
/名称.action
窄化路径
/名称/名称
ServletConfig
配置对象
注意:
每一个servlet都有自己的servletconfig
对应的是web.xml里面的servlet配置
需求:
给servlet设置初始化属性值
s1
cn.com.hc.servlet.Servlet_1
<!--配置初始化值-->
<init-param>
<param-name>password</param-name>
<param-value>940419</param-value>
</init-param>
s1 /s1
在servlet中获取属性值
//根据属性名获取属性值
//获取当前servlet的servletconfig对象
ServletConfig servletConfig=this.getServletConfig();
String password=servletConfig.getInitParameter(“password”);
System.out.println(password);
ServletContext
上下文对象
注意:一个项目中只有一个ServletContext
方法:
1.getAttribute(属性名) 获取属性值
2.setAttribute(属性名,属性值) 设置属性值
3.getRealPath(“/”) 获取绝对路径
4.getContextPath() 获取相对路径
//设置属性值到上下文对象中
//获取上下文对象
ServletContext servletContext=this.getServletContext();
servletContext.setAttribute(“password”,“940419”);
response.getWriter().write((String) servletContext.getAttribute(“password”));
域对象:具备在动态资源之间传递数据的功能
1.request 请求对象(利用请求转发)
2.ServletContext 上下文对象(一个项目中只有一个该对象)
3.Session 会话对象
Session
会话跟踪技术
保存的是用户和服务器之间沟通的一些重要信息
一次会话:
浏览器与服务器之间一直在沟通,没有断开
浏览器发送多次请求
方法:
getSession() 当session对象不存在时,创建一个新的
getSession(true) 当session对象不存在时,创建一个新的
getSession(false) 当session对象不存在时,不创建
getAttribute(属性名) 获取属性
setAttribute(属性名,属性值) 设置属性
setMaxInactiveInterval(时间) 设置有效期
通过配置文件
1
Session:
1.保存到服务器中
2.建议隐私信息保存到session中
3.Session对象不要创建太多,影响服务器性能
4.共享session对象(redis)
Cookie:
1.保存到浏览器中
2.公开信息建议保存cookie
单点登录
Cookie
添加
//Cookie
//创建cookie对象时直接设置属性(添加)
Cookie cookie=new Cookie(“password”,“940419”);
//把cookie对象添加到浏览器中
response.addCookie(cookie);
删除
//Cookie
//创建cookie对象时直接设置属性(添加)
Cookie cookie=new Cookie(“password”,“940419”);
//有效期 0
cookie.setMaxAge(0);
//把cookie对象添加到浏览器中
response.addCookie(cookie);
修改
//Cookie
//创建cookie对象时直接设置属性(添加)
Cookie cookie=new Cookie(“password”,“940419”);
//修改
cookie.setValue(“12345”);
//把cookie对象添加到浏览器中
response.addCookie(cookie);