servlet学习小结

1.servlet介绍
1.概念
servlet实际上就是一个接口
1.狭义上:servlet就是指servlet接口
2.广义上:凡是实现servlet接口的类,通常为servlet
2作用
1.接收用户发送的请求
2.调用其他java程序 来处理请求
3.根据出路结果,返回给用户一个页面
3.实现
1.创建一个类并实现servlet接口
2.在web.xml中进行配置
子主题 1

2.servlet的生命周期
1.servlet的生命周期,值servlet的对象从创建到被销毁的过程
2.Servlet的生命周期方法
1.构造器:
1.servlet第一次处理请求是,会调用构造器,来创建servlet实例。
2.构造器只会调用一次,servlet是单例模式,他是用多线程来调用service()方法----service()方法不是线程安全,所以尽力不要在service()方法中操作全局变量。
2.init()方法:构造器调用之后马上被调用,用来初始化servlet,只会调用一次
3.service()方法;servlet每次处理请求都会调用service()方法,用来处理请求
4.destroy()方法:servlet对象销毁前(web项目卸载是)调用,用来释放资源

3.servlet的注释
1.servlet3.0以后提供注解的方式去配置servlet
2.使用@WebServlet来配置servlet,
1.value
2.urlPatterns
loadOnStartup

4.http协议
1.概述
1
HTTP是Hyper Text Transfer Protocol的缩写,即超文本传输协议。
它是一种基于TCP/IP请求/响应式的协议,客户端在与服务器端建立连接后,
就可以向服务器端发送请求,这种请求被称作HTTP请求,
服务器端接收到请求后会做出响应,称为HTTP响应
HTTP专门用于定义浏览器与服务器之间交换数据的过程以及数据本身的格式
2.特点
1. 一次请求一次响应
2. 请求和请求之间是独立的,不能进行数据交换
3.是一种面向连接的无状态的协议,提高了响应的效率和安全性
3.组成部分
1.请求
2.响应

5.Request
1.概述:客户端在请求服务器的时候,服务器就会创建一个请求对象(Request对象),通过该对象就可以实现客户端和服务器之间的请求操作(客户端给服务端发送数据、服务端可以获取客户端发送的数据,通过该对象该可以获取请求消息)
2.产生和体系结构
1.产生:服务器(Tomcat)创建的
2.体系结构:
1.ServletRequest接口
2.HttpServletRequest接口继承了ServletRequest接口
3. RequestFacade类实现了HttpServletRequest接口
4注意:使用请求对象时,由tomcat创建了RequestFacade的对象
3.具体的作用
1.获取请求消息中的数据
1. 请求行
1.组成:请求方式 + URL + 协议
2.案例:GET localhost:8080/day02/hello?name=zhangsan HTTP/1.1
2方法:
1.String getMethod()获取请求方式(GET、POST、PUT)
2.String getQueryString()获取请求参数(name=zhangsan)
3.()String getRequestURI()获取请求的统一资源标识符(/day02/hello)
4.(
)StringBuffer getRequestURL()获取请求的统一资源定位符(localhost:8080/day02/hello)统一资源标识符比统一资源定位符的资源范围更广
5. ()String getServletPath()获取请求的Servlet路径(/hello)
6. String getProtocol()获取请求的协议(HTTP/1.1)
7.String getRemoteHost()获取请的IP和端口号(localhost:8080)
8.(
)String getContextPath()获取请求的虚拟路径(/day02)
2.请求头
1.String gerHeader(String name)通过请求头的键获取值
2.Enumeration getHeaderNames()获取所有请求头中的键
3.请求正文
1.BufferedReader getReader()获取字符输入流读取请求正文
2.InputStream getInputStream()获取字节输入流读取请求正文
2.其他功能(核心功能)
1.获取请求参数
1.请求参数:客户端发送给服务器的数据
2.方法:
1.String getParameter(String var1);通过键获取值
2. Enumeration getParameterNames();获取所有的键
3.String[] getParameterValues(String var1);通过键获取所由的值
4Map<String, String[]> getParameterMap();获取所有的键和值
5.注意:
1.获取参数的乱码问题:
1. get提交:tomcat8.0以后就对get请求的方式的乱码进行了处理
2. post提交:乱码,tomcat并未作出处理,需要调用request对象中的setCharacterEncoding(“编码”)来处理乱码
2.请求转发:一次请求在服务器内部的多次跳转的过程(服务器的行为)
1.步骤:
1.通过请求对象(request)来获取RequestDispatcher并指定跳转的资源
2.通过RequestDispatcher对象中的forward(req,resp)方法跳转
2.特点
1.一次请求(url地址不会发送改变,始终保持请求转发之前的URL)
2. 可以数据的共享(绑定到请求对象上的数据)
3.数据共享
作用域:数据可以被访问的区间(请求转发的资源之间)
方法:
1.void setAttribute(String var1, Object var2)将数据var2绑定到request请求对象上并取名为var1
2.void removeAttribute(String var1);将绑定在请求对象上的名字为var1的数据删除
3.Object getAttribute(String var1);获取绑定到请求对象上的名字为var1的数据
4.获取ServletContext对象 ServletContext servletContext = request.getServletContext();
4.获取ServletContext对象 ServletContext servletContext =request.getServletContext();

6.Response
1.概述:服务器在响应客户端的时候,服务器就会创建一个响应对象(Response对象),通过该对象就可以实现服务器和客户端之间的响应操作(服务端发送数据给客户端、客户端接收数据并显示,通过该对象该可以获取响应消息)
2.体系结构
1.ServletResponse接口
2. HttpServletResponse接口继承了ServletResponse接口
3.ResponseFacade类实现了HttpServletResponse接口
3功能
1设置响应内容
1.响应行
设置状态码 setStatus(int i)
2响应头
setHeader(String key,String value)
3.响应正文
1.获取字符输出流
2.获取字节输出流
response.getOutputStream()
4重定向特点
1. 两次请求
2. 地址栏会发生变化(相对于跳转之前的地址)
3. 不仅仅只是在服务器内部跳转
4. 重定向不能共享request对象中的数据
5.转发的特点
1. 一次请求
2. 地址栏不会发送改变
3. 只能在服务器内部跳转
4. 可以共享request对象中的数据
6.请阐述forward和redirect的区别?
7.路径问题
1.相对路径
规则:相对于当资源去定位到目标资源,不能定位到唯一的资源
2绝对路径
规则:是以/开头,可以通过绝对路径定位到唯一的资源;
8.ServletContext对象(web应用上下文对象)
1.概述:是一个web应用的上下文,一个web应用只有一个ServletContext对象
2.生命周期:伴随着Tomcat的启动该web应用的ServletContext对象就创建,Tomcat关闭该web应用的ServletContext对象就销毁,(一个web应用对应一个ServletContext对象)。
3.获取ServletContext的方式
1.request.getServletContext()
2.this.getServletContext()
4.功能
1.作用域(整个web应用):共享数据
1.Object getAttribute(String name) 从ServletContext对象上获取数据
2 void setAttribute(String name, Object object) 将数据绑定到ServletContext对象上
3.void removeAttribute(String name) 将数据从ServletContext对象上删除
4.注意:共享的数据可以在整个web应用被实现共享
5. 再次注意:因为作用域太大,慎用
2.获取MIME类型
String getMimeType(String file) 获取文件的MIME类型
3.获取服务器文件的真实路径
servletContext.getRealPath(FIlename str)该方法一般用于上传文件和下载文件时使用
9.会话
1.概述
1.概述:客户端和服务器多次请求和响应过程中共享数据的过程。
2,.原理
通过请求和响应来实现会话
3.实现
1.Cookie 客户端会话技术
2.Session 服务端会话技术
2.Cookie
1.概述:基于客户端浏览器会话的一种技术
2.原理:
1. setCookie:name=zhangsan 响应
2.Cookie:name=zhangsan 请求
3.使用
1.Cookie c1 = new Cookie(String name,String data);创建Cookie
2. response.addCookie(c1) 添加Cookie
3. request.getCookies() 获取Cookie
4Cookie可以存放多个吗?
可以,但是同一个域名(tomcat)下的Cookie数量是有限的,一般最多只能有20个Cookie
5.生命周期如何?
1.默认情况当浏览器关闭Cookie就销毁
2.其他情况需要是setMaxAge(int second)
1.正数:表示在浏览器中持久化多秒(关闭浏览器再打开也存在)
2.零:表示删除Cookie
3.负数:和默认情况一致
5.是否可以在同一个服务资源中跨应用访问
默认情况不可以,但是可以通过Cookie中的setPath()来设置
6.是否可以跨服务资源访问
默认情况不可以,但是可以通过Cookie中的setDomain()来设置
7.Cookie中是否可以存中文和特殊字符
1.在tomcat8以后的版本都是可以支持中文数据设置到Cookie的
2.特殊的字符不可以,可以使用URL编码进行发送,获取Cookie再进行URL解码
1. URLEncoder.encode(String str,String charset)编码
2.URLDecoder.decode(String str,String charset)解码
8.Cookie的特点
1. 存放在浏览器
2.一个Cookie最多存放4k的数据,同一个域名(tomcat)下的Cookie数量是有限的,一般最多只能有20个,因此存放数据量有限
3.不安全,一般用存放一些无关紧要的数据
9.Cookie使用案例(浏览记录、浏览时间
3.Session
1.概述:也是一种会话技术,基于服务端会话的技术,客户端和服务端之间多次请求和响应之间共享数据
2.入门开发
1.获取Session对象 request.getSession()
2. 绑定数据 session.setAttribute(String str,Object obj)
3. 从Session对象移除数据 session.removeAttribute(String str)
3. 原理
4.Session的细节
1.服务器不关闭,浏览器关闭,是否可以获取到session中的数据?
默认找不到,因为浏览器默认情况下关闭就会清空Cookie,那么在浏览器Cookie中的JSESSIONID也就没有了,没有JSESSIONID就找不到服务器中对应的Session
2.可以通过Cookie设置一下名字为JSESSIONID的Cookie的失效时间
3.服务器关闭,浏览器不关闭,是否可以获取session中的数据?
1.在IDEA中不行
2.当项目部署到Tomcat(tomcat8以后)中是可以继续访问之前的数据的
4.Session保持多久?
1.默认情况保持30分钟
2.可以在当前IDEA的此项目的web.xml中和tomcat下的config/web.xml中修改
3.可以通过session调用invalidate()方法立即销毁
5.特点
1.数据存放在服务器端,JSESSION的Cookie存放在浏览器
2.session可以存放大量数据
3.安全性高
jsp
1. 概述:JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。(动态网页的技术标准、可以处理客户端请求和对客户端进行响应,可以理解为一个特殊的HTML)
2.原理
1. JSP本质就是一个Servlet
2.访问JSP时,tomcat会将当前访问的xxx.jsp在tomcat内部创建一个类xxx_jsp.java,并将其编译为一个字节码文件
3. 脚本
1.<% 代码 %>小脚本
2.<%! 代码 %> 大脚本
3.<%=表达式 %>表达式
4.内置对象
1. pageContext
真实对象:pagecontext
作用:可以获取其他几个对象,绑定数据在jsp
2. page
真实对象:Object
作用:
3.application
真实对象:
作用:
4. out
真实对象:
作用:
5.response
真实对象:
作用:
6. request
真实对象:
作用:
7.session
真实对象:
作用:
8.exception
真实对象:
作用:
9.config
真实对象:servlet
作用:
5特点:
1.极大的简化了Servlet开发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ServletJavaEE 规范中的一部分,是处理 Web 请求的组件。Servlet 运行在服务器端,能够接收客户端发来的请求,并给客户端响应结果。下面我们来看看 Servlet 的基本概念和使用方法。 ## 一、Servlet 的基本概念 ### 1.1 Servlet 的生命周期 Servlet 的生命周期包含以下三个阶段: - 初始化阶段(init):当 Servlet 实例化后,Web 容器会调用其 init() 方法进行初始化操作。在此阶段,Servlet 可以执行一些初始化操作,例如读取配置信息、建立数据库连接等。 - 请求处理阶段(service):当客户端发来请求时,Web 容器会创建一个线程调用 Servlet 的 service() 方法处理请求。在此阶段,Servlet 可以获取请求参数、处理请求并生成响应数据。 - 销毁阶段(destroy):当 Web 应用停止或 Servlet 被卸载时,Web 容器会调用 Servlet 的 destroy() 方法进行清理工作。在此阶段,Servlet 可以释放资源、关闭数据库连接等。 ### 1.2 Servlet 的配置 在使用 Servlet 时,需要在 web.xml 文件中进行配置。以下是一个 Servlet 的基本配置: ```xml <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/myservlet</url-pattern> </servlet-mapping> ``` 其中,servlet-name 表示 Servlet 的名称,servlet-class 表示 Servlet 的类名,url-pattern 表示请求的 URL 匹配规则。 ## 二、Servlet 的使用方法 ### 2.1 编写 Servlet 编写 Servlet 有两种方法:一种是继承 HttpServlet 类,另一种是实现 Servlet 接口。这里以继承 HttpServlet 类为例: ```java public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 处理 GET 请求 PrintWriter out = resp.getWriter(); out.println("Hello, world!"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 处理 POST 请求 PrintWriter out = resp.getWriter(); out.println("Hello, world!"); } } ``` 在 Servlet 中,doGet() 方法用于处理 GET 请求,doPost() 方法用于处理 POST 请求。通过调用 HttpServletResponse 对象的 getWriter() 方法可以向客户端返回响应数据。 ### 2.2 部署 Servlet 将编写好的 Servlet 部署到 Web 容器中,有两种方法:一种是将 Servlet 类打成 war 包放到 Web 容器的 webapps 目录下,另一种是通过 Eclipse 等开发工具将 Servlet 部署到 Web 容器中。部署完成后,可以通过访问 Servlet 的 URL 来测试 Servlet 是否正常工作。 ## 三、总结 本文介绍了 Servlet 的基本概念和使用方法。ServletJava Web 开发中非常重要的组件,掌握 Servlet 的使用方法对于 Java Web 开发人员来说是必不可少的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值