关于Servlet的一些归纳(2)
1、web项目结构
根路径:
文件夹
文件
WEB-INF:
lib(存放一些jar文件)
classes(存放class文件)
web.xml
2、GenericServlet类
实现了Servlet接口,并重写了其中除service()方法之外的其他四个方法
3、HTTP协议
HTTP:Hyper Text Transfer Protocol 超文本传输协议,请求响应的无状态协议
HTTP协议是无状态的,如果需要保持状态,有几种解决方案?
1)HttpSession
2)Cookie
3)URL重写
4、请求头报文格式
1)GET 路径 协议
请求头
空行
代码
2)POST 路径 协议
请求头
空行
数据
5、响应头的报文格式
协议 状态码 信息
响应头
空行
页面内容
6、HttpServlet类
继承字GenericServlet抽象类
重写service方法,新增doGet方法跟doPost方法,根据提交方式决定调用doGet或是doPost方法
7、HttpServletRequest接口(继承自ServletRequest接口)
Http://localhost:8080/test/index.jsp?a=1&b=2
String getContextPath() 项目根路径/test
String getRequestURI() /test/index.jsp
String getRequestURL() Http://localhost:8080/test/index.jsp
String getQueryString() a=1&b=2
Enumeration<String> headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements())
{
String headerName = headNames.nextElement();
}
String getHeader(String headerName)
String getHeader(referer) 连接来路
HttpSession getSession()
Cookie getCookie()
String getMethod()获取提交方式post get
8、HttpServletResponse接口(继承自ServletResponse)
//是指浏览器不缓存
response.addHeader("Pragme","no-cache");
response.addheader("Cache-Control","no-cache");
response.addheader("Expires","0");
html可以通过mete设置页面不缓存
<mete http-equiv="pragma" content="no-cache">
<mete http-equiv="cache-control" content="no-cache">
<mete http-equiv="expires" content="0">
重定向 void sendRedirect(String path)
面试题:重定向跟转发的区别,分别通过什么来共享数据
转发:一次请求,一次响应,服务器直接跳转页面,不管转发多少次都是一个请求,可以通过request来请求共享数据,浏览器地址栏路径不变
重定向:两次请求 两次响应 第一次请求结束后,服务器给客户端返回状态代码302(资源转移),通过响应头设置location告诉浏览器一个路径,浏览器马上发起第二次请求,请求location制定的地址,处理后返回响应,浏览器地址栏地址变为第二次请求的地址,不能通过request来共享数据
转发和重定向都可以通过session application来共享数据
9、HttpSession接口
针对一个用户跨页面共享数据
void setAttribute(String name,Object values)
Object getAttribute(String name)
void removeAttribute(String name)
String getId() 获得session的id,id存放在客户端的浏览器内存中,通过响应头跟请求头中来回传递
void setMaxInactiveInterval(int seconds) 设置不活动的时间间隔,即session的过期时间
void invalidate()设置session无效
web.xml中也可以设置session的过期时间
<sesson-config>
<session-timeout>时间(分钟)</session-timeout>
</session-config>
10、ResquestDispatcher接口
ResquestDispatcher rd = request.getRequestDispatcher(); 可以使用相对路径,也可以使用“/”开头的绝对路径,不用加项目根路径
ResquestDispatcher rd = this.getServletContext().getResquestDispatcher(); 必须是以“/”开头的绝对路径,不用加项目根路径
void forward(ServletRequest request,ServletResqonse response) 转发
void include(ServletResquest request,ServletResponse response) 包含
11、ServletConfig接口
读取关于servlet的配置信息
String getInitParameter(String name) 获取当前servlet配置的初始化参数
String getServletName() 获得当前Servlet的名字
ServletContext getServeltContext()
12、ServletContext接口
全局共享,只有一个对象
void setAttribute(String name,Object values);\
Object getAttribute(String name)
void removeAttribute(String name)
大小排序:pageContext-->request-->session-->application
String getRealPath(String virtualPath) 根据虚拟路径获得真实路径
RequestDispatcher getRequestDispatcher(String path)
String getInitParameter(String name)获得全局初始化配置参数
InputStream getResouseAsStream(String path)可以根据虚拟路径直接获得输入流
关于Servlet的一些归纳(2)的更多相关文章
- Servlet面试题归纳
尊重原创:http://blog.csdn.net/caohaicheng/article/details/38116481 1.说一说Servlet生命周期 Servlet生命周期包括三部分: 初始 ...
- 关于Servlet的一些归纳(1)
1.servlet接口 含5个抽象放法 void init(ServletConfig config) throws ServletException //初始化Servlet void servic ...
- java-we不在esclipse创建servlet之后改名不起作用的问题归纳
有时候我们不满意类名而去改名,但是改过了之后却发现不能实现它本来该实现的功能了,这是为什么呢,原因就是在2.5里面创建了servlet之后就会在web.xml里生成关于这个servlet的配置,你只是 ...
- Servlet和CGI的区别
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销 ...
- 初学 Java Web 开发,请远离各种框架,从 Servlet 开发
Web框架是开发者在使用某种语言编写Web应用服务端时关于架构的最佳实践.很多Web框架是从实际的Web项目抽取出来的,仅和Web的请求和响应处 理有关,形成一个基础,在开发别的应用项目的时候则可以从 ...
- JSP/Servlet基础语法
相关学习资料 http://my.oschina.net/chape/blog/170247 http://docs.oracle.com/cd/E13222_01/wls/docs81/webapp ...
- 【重走Android之路】【路线篇(二)】知识点归纳
[重走Android之路][路线篇(二)]知识点归纳 参考:http://blog.csdn.net/xujing81/article/details/7313507 第一阶段:Java面向对 ...
- jsp与El,jstl知识点总结归纳
jsp与El,jstl知识点总结归纳 jsp部分 一.jsp的三大指令 page ,include,taglib 1.jsp中的page指令 <% page %>-设置jsp 例如: &l ...
- 图解JSP与Servlet的关系
Servlet是Java提供的用于开发Web服务器应用程序的一个组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容.Servlet是平台独立的Java类,编写一个Servlet, ...
随机推荐
- HL-D793G七位蓝色+PT6311驱动
和之前那块一起买的.又画了这个屏幕驱动,还画了灯丝电源驱动,和以前画的stm8核心板在JLC拼板. 亚光黑颜色,不单独收钱! 切好水洗吹干! 忘记给排针加丝印,手写代之. 焊接的时候,脑子发热,以为把 ...
- 【题解】Luogu P1344 [USACO4.4]追查坏牛奶Pollutant Control
原题传送门 看到这种题,应该一眼就能知道考的是最小割 没错这题就是如此简单,跑两遍最大流(最小割=最大流),一次边权为题目所给,一次边权为1 还有一种优化,优化后只需跑一次最大流,把每条边的权值改成w ...
- 富文本编辑器Quill(二)上传图片与视频
image与video在Quill formats中属于Embeds,要在富文本中插入图片或者视频需要使用insertEmbed api. insertEmbed insertEmbed(index: ...
- Vue学习——学习vue必须了解的几个知识点
node.js介绍 Node 是一个让 JavaScript 运行在服务端的开发平台,使用JavaScript也可以开发后台服务.说明白些它仅仅是一个平台,我们使用vue开发必须要安装node.js. ...
- Android文件各种存储路径的比较
1.File cacheDir = context.getCacheDir(); 应用内部存储空间(数据文件私有)文件存储到这个路径下,不需要申请权限,当应用被卸载的时候,目录下的文件会被删除. 需要 ...
- Python类元编程初探
在<流畅的Python>一书中提到: Classes are first-class object in Python, so a function can be used to crea ...
- Gradle 简记
不是 Gradle,就是 Maven吧.对比下: Maven: 推荐(?)了一个默认的项目结构和生命周期,但是太过死板 虽然暴露了 API 接口,但是插件定制太过复杂 和 Ant 一样,仍然无法表达复 ...
- 移动端input“输入框”常见问题及解决方法
转自 https://www.cnblogs.com/ljx20180807/p/9837748.html 1. ios中,输入框获得焦点时,页面输入框被遮盖,定位的元素位置错乱: 当页input存在 ...
- Lombok之使用详解
前言 在Java中,封装是一个非常好的机制,最常见的封装莫过于get,set方法了,无论是Intellij idea 还是Eclipse,都提供了快速生成get,set方法的快捷键,使用起来很是方便, ...
- Android之人脸识别
**前言** 人工智能时代快速来临,其中人脸识别是当前比较热门的技术,在国内也越来越多的运用,例如刷脸打卡.刷脸App,身份识别,人脸门禁等等.当前的人脸识别技术分为WEBAPI和SDK调用两种法方式 ...