Tomcat和Http

简介: 介绍Tomcat和Http各自的区别

一.cs结构的软件:

1.cs:client   Server客户端和服务器,这种软件需要安装

2.优点:可以减轻服务器端的压力,将部分代码写到客户端

3.缺点:一但服务器更新了,客户端也需要更新

二.bs结构的软件:-----用的比较多

1.bs:Browser  Server浏览器和服务器,不需要安装

2.优点:服务器一但更新,不需要更新客户端

3.缺点:服务端压力会比较大,界面不如cs结构软件

静态web资源:HTML  Css  js

动态web资源:Servlet、JSP、PHP、ASP-----前两个是重点

动态web资源目录结构:

website--静态页面(HTML、CSS、JS、图片)  JSP页面   WEB-INF          web.xml

Tomcat项目发布项目一:

1.直接将项目复制到tomcat/webapps下

2.在tomcat/conf/server.xml配置tomcat的虚拟路径

3.在tomcat/conf/Catalina/localhost下

Tomcat项目发布项目二:

1.需要配置Tomcat的虚拟路径。

一.如何配置虚拟路径:

1.在Tomcat/conf/server.xml中进行配置。

如何在Eclipse中配置Tomcat:

1.选择window--preferences--server--Runtime

ipconfig/all可以查看本机的ip地址。

HTTP的概述:

一.什么是HTTP协议---超文本传输协议,主要是接受http页面。

二.特性:

1.必须要先有请求,后有响应

2.请求和响应必须成对出现

请求部分:

1.请求行----请求方式----一般是get和post

2.请求头----格式一般都是一个key对应的一个vaule的情况

3.请求体----只有post请求方式才有请求体,而且请求体是post方式请求参数

响应部分:

1.状态码:200--响应成功  302--需要进行重定向操作  304--需要查找本地缓存  404--请求资源不存在  500--服务器内部错误

2.响应头:格式一般都是一个key对应的一个vaule的情况      Refresh:定时刷新

3.响应体:就是显示在浏览器上的东西

Servlet的概述:

一.什么是Servlet---Servlet其实就是一个运行在web服务上的小的java程序,用于处理从web客户端发送的请求,并且对请求做出响应。

使用Servlet:

1.编写一个Java类实现Servlet的接口。

2.配置Servlet是在xml里

Servlet的实现关系:

一.HelloServlet接口有两个类:

   1.GenericServlet类------通用的Servlet,是一个与协议无关的Servlet

   2.HTTPServlet类-----Http专用的Servlet

通常编写一个Servlet,一般都会让这个Servlet继承HTTPServlet,然后重写servlet方法

为了提高效率,在doget方法里调用postget,反之

Servlet的生命周期:

一:什么是生命周期-----一个对象从创建到销毁的过程。

二:Servlet何时创建何时销毁?

 1.Servlet有init、servlet、destroy方法,这几个方法称为是Servlet生命周期相关的方法,

  2.Servlet在被访问的时候会被实例化,只要Servlet被实例化那么Servlet中的init方法就会被执行(init只会执行一次),任何从客户端发送的请求,

    Servlet中的servlet方法就会执行(在servlet方法内部根据请求的方式不同调用不同doxxx方法)。当Servlet从服务器中移出或者服务器关闭的时候

    Servlet被对象销毁,里面destroy方法就会被执行,然后垃圾回收就会将其收掉。

如何在服务器启动之前创建servlet对象?

 配置:在xml里servlet里定义 <load-on-startup>2---整数越小创建的对象越快</load-on-startup>标签

Servlet访问路径的配置:

 1.在 xml里<servlet-mapping>里<url-pattern>必须以/开始    (/*   /aaa/*)   还有扩产名匹配---不能以/开始,是以*开始*.abc</url-pattern>配置

ServletConfig对象:

 1.ServletConfig用来获得Servlet的相关配置的对象。

 2.如何获得ServletConfig对象----通过getServletConfig获取。

 3.getServletConfig里有什么方法----1.通过getInitParameter获取初始化值     2.通过getInitParameterNames()获得所有

 初始化参数的名称。3.通过getServletName获得名称

 4.配置Servlet的初始化方式---在xml里servlet里定义<init -param></init -param>标签,

 里面有<param-name></param-name>,<param-value></param-value>

ServletContext对象:

一:什么是ServletContext---ServletContextt对象对servlet之前和之后的内容都知道。

二:ServletContext的作用:

  作用1:用来获取web项目信息----因为web项目只有一个ServletContext对象,所以对这个项目的内容都是理解的。

             getMimeType----获取文件的MIME类型。

getContextPath----获得请求路径的工程名。

getInitParameter----获得全局初始化参数。

  作用2:用来读取web项目下的文件---利用file来读取

ServletContext对象之作为域对象存取数据:

一:什么是域对象:指的是将数据存入到域对象中,这个数据就会有一定的作用范围。

二:ServletContext作为域对象:

1.getAttribute(string  name)----返回object,存入数据的方法

2.setAttribute(string  name)----返回object,获取数据的方法

3.removeAttribute(string  name)返回void,移除数据的方法

 

Response对象的API:

一:Response关于响应行的方法:

1:setStatus(int sm)返回值void-----设置响应状态码。

二:Response关于响应头的方法:

1:setHeader(string  name,string  value)---针对一个key对应的一个value,有关于跳转,

2:实际开发可以使用---Response.sendRedirect("location","url")

 

页面定时跳转扩展内容:

一:使用js完成读秒的效果:

1.response.setHeader("Refresh", "5;url=/SM/responsedemo2");

Response对象响应的中文乱码处理:

1.使用字节流的方式输出中文:ServletOutputStream outputStream=response.getOutputStream();---outputStream.write("中文".getBytes());之后要调用

2.出现乱码解决:设置getBytes()里为getBytes("UTF-8"),然后把头部response.setHeader("Content-Type", "text/html;charset=UTF-8");

3.字符流比较好用

Request对象的概述:

1.getMethod()----返回string,获得请求方式。****  

2.getQueryString()---返回string,获得请求路径后的提交参数的字符串。

3.getRequesURL()---返回string,获取请求路径URL

4.getRemoteAddr()---返回string,获得客户端的请求方式****

5.getHeader(string name)---返回string,获取请求头的方法

6.getParameterValues(string name)---返回string,一个name对应多个value,比如爱好***

7.getParameterMap()---返回Map---可以接收提交的所有参数***

8.setAttribute(string name)---返回void,向Request域中存数据

9.getAttribute(string name)---返回void,从Request域中获取数据

10.RemoveAttribute(string name)---返回void,从Request域中移除数据

Request对象接收表单请求参数:

1.request.getParameter( )----一个值

2.request.getParameterValues( )----多个值

3.request.setCharacterEncoding("UTF-8");-----解决post方法乱码问题

JSP:

1.servlet的缺点:需要进行配置,不方便维护,很难向网页输出html页面内容。

2.jsp的简单使用:先在webContent新建一个文件夹,再新建一个jsp。

3.jsp缺点:数据的封装和处理很难。

4.JSP+Javabean:优点:显示数据和封装数据非常方便。缺点:维护很麻烦。

JSP的脚本元素:

1.什么是JSP脚本元素:JSP=HTML+Java代码+JSP自身东西。 JSP的元素就是在JSP中嵌入java代码。

2.声明标签:

     语法:<%!  变量或方法声明 %>

     用法:

3.表达式标签:

     语法:<%=i  表达式 %>

4.程序代码标签:

     语法:<% int  x=5    程序代码%>  

JSP开发模式之MVC模式:

1.JSP+Javabean:使用jsp来显示数据,使用Javabean来封装和处理数据。-----开发简单应用

2.JSP+servle+Javabean(称为MVC开发模式):使用jsp来显示数据,使用Javabean来封装和处理数据,servlet用来控制调度

Request作为域对象存储对象:

1.setAttribute(string  name)---返回void,向Request域中保存数据。

2.getAttribute(string  name)---返回object,从Request域中获取数据。

3.removeAttribute(string  name)---返回void,从Request域中移除数据。

Request作为域对象作用范围:

1.Request对象其实就是从客户端浏览器向服务器发送的一次请求信息的封装。

请求转发和重定向完成页面的跳转:

1.请求转发的写法:通过servletRequest对象获得RequestDispatcher对象

2.getRequestDispatcher(string  path)---返回RequestDispatcher,通过这个方法获得RequestDispatcher对象。

3.forward(ServletRequest  request, ServletResponse  response)---返回void,再根据RequestDispatcher中的方法进行跳转。

重定向:sendRedirect(string  location)---返回viod,通过HttpServletResponse对象中的方法实现重定向。

请求转发和重定向的区别:

1.如果需要request进行值传递,需要通过请求转发来完成。

2.如果页面需要调整到其他网站上必须使用重定向。

记录登录成功人数分析:

1.保存到ServletContext域中,在登陆成功后,从域中将这个值获取到,进行+1操作,将这个值存回到ServletContext域中。

会话技术:

1.会话简单理解为:用户打开一个浏览器,点击多个超链接访问服务的web资源,然后关闭浏览器,整个过程称为一次会话。

会话技术分为Cookie和Session技术:

1.Cookie是客户端技术,程序把每个用户的数据以Cookie的形式保存到各自浏览器中,当用户使用浏览器再次去访问服务web中的资源,就会带各自的数据过去

2.Session是服务端技术,利用这个技术,服务器运行是为每个用户的浏览器创建一个独享的session对象。

记录用户上次访问时间:

1.getCookies( )----返回Cookie[ ],获取从浏览器带过来的所有Cookie

2.addCookie(Cookie  cookie )----返回void,向浏览器回显Cookie

Cookie的分类:

1.默认级别的Cookie:没有设置有效时间,只要关闭了浏览器,Cookie也被销毁了。

2.持久级别的Cookie:可以设置有效时间,这种Cookie的内容不是保存在浏览器的内存中,将Cookie的内容保存到硬盘上。

如何设置有效时间:定义一个构造方法---Cookie(string  name,sting  value)

3.getName( )----返回string,获得Cookie名称的方法

4.getValue( )----返回string,获得Cookie值的方法

5.setDomain(string  patter)----返回void,设置Cookie的有效域名

6.setPath(string  url)----返回void,设置Cookie的有效路径

7.setMaxAge(int  expiry)---返回void,设置Cookie的有效时长

8.浏览器存放的Cookie的大小和个数都是有限制的。

Session:

1.Session:没有大小和个数的限制。

2.Session的获取:HttpSession  session=request.getSession( );

3.setAttribute(string  name,object  value)----返回void,向session中存入数据。

4.getAttribute(string  name)----返回object,从session域中获取值

5.removeAttribute(string  name)----返回void,从session中移除数据

一次性验证码的效验:

1.先在服务器中生成随机数,然后保存到session,验证码使用后,直接从session移除

JSP的模板修改和注释:

一:jsp的模板修改:

1.打开窗口,在到首选项搜索jsp。

二:jsp的注释:

1.<%--内容--%>----jsp的注释

三:jsp的指令元素:

1.用于指示jsp执行步骤

2.语法:<%@  指令名称  属性名称=属性的值 %>

四:jsp指令元素的分类:

1.page指令---指示jsp的页面设置属性和行为

 1.写法:<%@  page  属性名称=属性的值 %>

 2.在jsp页面中,中有import属性可以出现多次,其他属性只能出现一次

 3.page指令属性有哪些:language、extends、session、buffer、autoFlush、import、isErrorPage、errorPage、isELIgnored

2.include指令---指示jsp包含哪些其他页面

 1.写法:<%  include  属性名=属性值 %>

 2.作用:在jsp页面中静态包含一个文件,同时由该jsp解析包含的文件内容

 3.include指令属性有哪些:file--指示jsp页面包含页面路径,用于导航栏跳转不变化的引入

 4.应该将被包含的页面结构去掉

 5.在被包含的页面中定义变量,在包含的页面还可以使用

3.taglib指令---指示jsp页面包含哪些标签库

 1.写法:<%@  taglib  属性名称=属性的值  %>

 2.作用:用于在jsp页面中引用标签库

 3.taglib指令属性有哪些:uri--引用标签库的路径、prefix--引入标签库的别名

JSP的内置对象:

一:jsp的内置对象有哪些:

1.Request:从客户端向服务器发送请求对象

2.response:从服务端向客户做出响应对象

3.session:服务器为客户端创建会话对象

4.application:代表应用,获得ServletContext对象

5.out:向输出流写入内容对象

6.page:当前的jsp翻译成servlet后的对象的引用

7.pageContext:本jsp的页面上下文对象

8.config:本jsp的ServletConfig对象

9.exception:表示jsp页面运行时产生的异常对象

pageContext对象:

1.作用1:提供了page范围的数据存取的方法:

1.向page中存入数据---setAttribute(string  name,object  value)返回一个void

2.从page中取出数据---getAttribute(string  name)返回一个object

3.从page中移除数据---removeAttribute(string  name,int  scope)返回一个void

4.查找属性得方法---findAttribute(string  name)返回一个object

2.作用2:通过这个对象获得其他得8个内置对象:如:pageContext.setAttribute("name", "李四", pageContext.REQUEST_SCOPE);

JSP四个作用范围:

1.PageScope:页面范围指的是在当前页面内有效,出了这个页面,用pageContext保存得数据就无效了

2.RequestScope:请求范围就是从客户端向服务器发送一次请求,服务器对这次请求做出了响应之后,用request保存得数据就无效了

3.SessionScope:会话范围就是每个浏览器向服务器发送请求,将该会话结束

4.ApplicationScope:应用范围就是在整个应用中任意的地方都可以获取

JSP的动作标签:

1.jsp的动作标签用于在jsp页面中提供业务逻辑功能,避免在jsp页面直接编写java代码,造成jsp难以维护。

2.常用的动作标签:

1.<jsp:forward/>---请求转发。

2.<jsp:include/>---包含(动态包含)

3.<jsp:param/>---传递参数

EL的概述:

1.EL作用---EL和JSTL一起使用取代jsp页面中嵌入java代码写法

2.EL功能:

1.EL获取数据:

 1.EL表达式语句在执行的时候,会调用pageContext.findAttribute( )方法。

 2.先pageContext.setAttribute("name", "张三");再${pageScope.name }。

2.EL执行运算

3.EL获取web开发常用的对象

4.EL调用java方法

EL语法:${EL表达式(如:pageScope.name)}

EL获取数组和集合的数据:

1.要把数组放进pageContext.setAttribute("arr", arr)域中。

EL获取web开发常用对象:

1.pageContext

2.pageScope--获取指定域下的名称的数据

3.requestScope--获取指定域下的名称的数据

4.sessionScope--获取指定域下的名称的数据

5.applicationScope--获取指定域下的名称的数据

6.param--在页面中接收请求参数(接收一个名称对应一个参数值)

7.paramValues--在页面中接收请求参数(接收一个名称对应一个参数值)

8.header--在页面上获取请求头(获取一个key对应一个value头)

9.headerValues--在页面上获取请求头(获取一个key对应多个value头)

10.cookie--访问cookie的名称和值(${cookie.key.name})${cookie.key.value}

11.initParam--获得全局初始化参数

JSTL的概述:

1.JSTL的作用:主要和EL来取代传统页面上直接嵌入java代码的这种写法。提升程序的可读性、维护性和方便性。

2.JSTL的标签库:

1.c标签(core标签库)**

2.fmt标签(国际化标签库)

3.xml标签

4.sql标签

5.jstl函数库

JSTL入门:

1.先在lib里引入两个jar包

2.再<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>放在顶部

监听器:

1.监听器是一个实现了特定接口的java类,这个java类用于监听另一个java类的方法调用或者属性的改变。当被监听对象发生上述事件后,监听某个方法会被执行

2.监听器用来监听其他对象的变化,主要应用在图形化界面上开发

3.监听器的术语:

1.事件源:指的是被监听对象(汽车)

2.监听器:指的是监听对象(报警器)

3.事件源和监听器绑定:在汽车上安装报警器

4.事件:指的是事件源对象的改变(踹了汽车一脚)

Servlet中的监听器:

1.用于监听事件源分别是ServletContext、ServletRequest和HttpSession这三个域对象

1.ServletContextListener监听器:

 1.作用:用来监听ServletContext域对象的创建和销毁的监听器

 2.创建:ServletContext在服务器启动的时候,为每个web应用创建单独的ServletContext对象

 3.销毁:在服务器关闭的时候,或者从web服务中移除的时候

 4.方法:contextInitialized(ServletContextEvent  sce)---返回void,监听创建的方法

 5.方法:contextDestroyed(ServletContextEvent  sce)---返回void,监听销毁的方法

2.HttpSessionListener监听器:

 1.作用:用于来监听HttpSession对象的创建和销毁

 2.创建:服务器端第一次调用getsession()方法的时候

 3.销毁:非正常关闭服务器、Session过期(默认过期30分钟)、手动调用session.invlidate()方法。

 4.方法:sessionCreated(HttpSessionEvent  se)---返回void,监听创建的方法

 5.方法:sessionDestroyed(HttpSessionEvent  se)---返回void,监听销毁的方法

 6.问题:1.访问html是否创建Session---不会      2.访问jsp是否创建session---会     3.访问Servlet是否创建Session---不会

3.ServletRequestLisrener监听器:

 1.作用:用于来监听ServletReques对象的创建和销毁

 2.创建:从客户端向服务器发送一次请求,服务器就会创建request对象

 3.销毁:服务器对这次请求做出了响应

 4.方法:requestInitialized(ServletRequestEvent  src)---返回void,监听创建的方法

 5.方法:requestDestroyed(ServletRequestEvent  src)---返回void,监听销毁的方法

 6.问题:1.访问html是否创建请求对象---会      2.访问jsp是否创建请求对象---会     3.访问Servlet是否创建请求对象---会

2.监听器的分类:

1.监听三个域对象的创建和销毁的监听器

2.监听三个域对象的属性变更(添加属性、移除、替换)的监听器

3.监听HttpSession中javabean的状态改变的监听器

 1.保存在session域中的java类可以有多种状态:绑定到session中;从session中解除绑定。

 2.Servlet定义了两个特殊的监听的接口来帮助java类了解自己在session域中的状态:

  1.HttpSessionBindingListener接口:--监听java类

   1.方法:valueBound(HttpSessionBindingEvent  event)---返回void

  2.HttpSessionActivationListener接口:实现了两个接口的类不需要在web.xml中进行配置

Filter:

1.Filter称为过滤,web开发人员通过Filter技术,对web服务器所管理的资源(JSP、Servlet、静态图片或者静态html文件进行拦截,从而实现特殊的功能)

Filter入门:

1.第一步编写一个实现类Filter接口

2.第二部对过滤进行配置

FilterChain对象的概述:

1.FilterChain过滤器链:在一个web应用中,可以开发编写多个Filter,这些Filter组合起来称为是一个过滤器链。

Filter生命周期:

1.创建:web服务器启动的时候,web服务器创建Filter实例对象。并且调用其init方法进行初始化(Filter对象只会创建一次,init方法也只会执行一次)

2.每次Filter拦截的时候。都会执行doFilter的方法。

FilterConfig对象的概述:

1.作用:用来获得Filter的相关的配置对象

2.方法:

文件上传:

1.文件上传是将本地的文件通过流写入到服务器的过程

2.文件上传的技术:

1.JSPSmartUpload:应用在jsp上的文件上传和下载组件。

2.FileUpload:应用在java环境的文件上传的功能。

3.Servlet3.0:提供文件上传的功能。

4.Struts2:提供文件上传的功能。

3:文件上传的要素:

1表单的提交方式需要是post。

2.表单中需要有<input  type="file">元素,需要有name和属性

3.表单 enctype=“multipart/form-date”

4.文件上传的API之DiskFileItemFactory:

1.构造方法:DiskFileItemFactory( )、DiskFileItemFactory(int  sizeThreshold, File  repostory)

2.sizeThreshold:设置文件上传的缓冲区的大小,默认值为10kb。

3.repostory:用来文件上传过程中产生临时文件存放的路径。

5.文件上传的API之ServletFileUpload:

1.构造方法:ServletFileUpload( )、ServletFileUpload(FileItemFactory  fileItempFactory)  

2.isMultipartContent:判断表单的enctype属性是否正确,返回boolean

3.parseRequest:用来解析request对象,返回一个List集合

6.文件上传的API之FilemItem:

1.isFormFiled():用来判断表单是上传项还是普通项,返回boolean,如果为true代表普通项

2.getFiledName():用来获得普通项的名称

3.getString():用来获得普通项的值

4.getName():用来获得文件名的方法

5.getInputStream():用来获得文件内容的方法

6.delete():删除文件上传时的临时文件

相关文章
|
6月前
|
XML 网络协议 Java
JavaWeb -- HTTP -- WEB服务器TOMCAT
JavaWeb -- HTTP -- WEB服务器TOMCAT
|
3月前
|
监控 网络协议 应用服务中间件
【Tomcat源码分析】从零开始理解 HTTP 请求处理 (第一篇)
本文详细解析了Tomcat架构中复杂的`Connector`组件。作为客户端与服务器间沟通的桥梁,`Connector`负责接收请求、封装为`Request`和`Response`对象,并传递给`Container`处理。文章通过四个关键问题逐步剖析了`Connector`的工作原理,并深入探讨了其构造方法、`init()`与`start()`方法。通过分析`ProtocolHandler`、`Endpoint`等核心组件,揭示了`Connector`初始化及启动的全过程。本文适合希望深入了解Tomcat内部机制的读者。欢迎关注并点赞,持续更新中。如有问题,可搜索【码上遇见你】交流。
【Tomcat源码分析】从零开始理解 HTTP 请求处理 (第一篇)
|
3月前
|
Java 应用服务中间件 Maven
JavaWeb基础5——HTTP,Tomcat&Servlet
JavaWeb技术栈、HTTP、get和post区别、响应状态码、请求响应格数据式、IDEA使用Tomcat、报错解决、Servlet的体系结构、IDEA使用模板创建Servlet
JavaWeb基础5——HTTP,Tomcat&Servlet
|
6月前
|
缓存 负载均衡 NoSQL
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
90 1
|
6月前
|
Java 应用服务中间件 API
Tomcat处理一个HTTP请求的执行流程的详细解析
Tomcat处理一个HTTP请求的执行流程的详细解析
224 4
|
6月前
|
Java 应用服务中间件 程序员
JavaWeb基础第四章(SpringBootWeb工程,HTTP协议与Web服务器-Tomcat)
JavaWeb基础第四章(SpringBootWeb工程,HTTP协议与Web服务器-Tomcat)
|
7月前
|
运维 Java 应用服务中间件
Tomcat详解(七)——Tomcat使用https配置实战
Tomcat详解(七)——Tomcat使用https配置实战
1254 4
|
7月前
|
网络协议 Java 应用服务中间件
HTTP协议与Tomcat在IJ中配置
本文是对自己学习JavaWeb学习的笔记的总结,添加了一些自己的东西,然后进行一次复盘,并加深一下学习的理解和印象.其中内容主要包括对http协议的详细介绍,java常见服务器的初步介绍,以及IJ旧版和新版的tomcat服务器的配置图解教程
|
7月前
|
Java 应用服务中间件
解决tomcat启动报错:无法在web.xml或使用此应用程序部署的jar文件中解析绝对的url [http:java.sun.com/jsp/jstl/core]
解决tomcat启动报错:无法在web.xml或使用此应用程序部署的jar文件中解析绝对的url [http:java.sun.com/jsp/jstl/core]
1640 1
|
7月前
|
存储 安全 Java
从HTTP到Tomcat:揭秘Web应用的底层协议与高性能容器
从HTTP到Tomcat:揭秘Web应用的底层协议与高性能容器