java web之servlet
readme
课程回顾:Tomcat服务器和HTTP的协议
Tomcat服务器
WEB简介
1.网络的架构 C/S B/S
2.C/S 客户端/服务器 B/S 浏览器/服务器* C/S压力比较小,下载客户端软件,更新 B/S压力比较大,服务器更新。
静态和动态WEB资源
1.静态:HTML CSS JS 数据不是活的
2.动态:JSP/Servlet 数据是活的
服务器简介
1.访问:http://ip:端口号/xxx/xxx
Tomcat服务器
1.下载和安装服务器
2.启动服务器 tomcat/bin/startup.bat
3.关闭服务器 tomcat/bin/shutdown.bat
常见的启动的问题
1.JDK环境没配置好
2.端口占用的问题
Tomcat目录结构
1.bin
2.conf 配置Tomcat配置文件
3.lib Tomcat运行时需要的jar包(不是咱们自己编写的第三方jar包)
4.logs 日志文件
5.temp 临时文件
6.webapps web applications 项目
7.work JSP翻译成.java存放的目录
Tomcat服务器中配置资源
1.部署静态的WEB资源* 在webapps目录下创建一个文件夹(xxx),直接在xxx目录存放静态资源(HTML CSS JS JSP)2.部署动态的WEB资源* 在webapss目录下创建一个文件夹(yyy)yyy -- 项目| -- 存放一些静态的资源(HTML CSS JS JSP)| WEB-INF -- 名称都是固定的 | -- 存放一些静态的资源(HTML CSS JS JSP)|web.xml -- 必须要有的(文档声明,根节点)classes -- 文件夹(src目录下所有的java代码,编译成.class文件)lib -- 第三方的jar包(DOM4J)
3.访问:http://localhost:80/yyy/hello.html
4.注意: 如果这些资源要是存放在WEB-INF目录下的话,不能直接访问的。http://localhost:80/yyy/WEB-INF/hello.html
Tomcat与MyEclipse集合
1.集成
2.创建项目 -- 部署
3.启动服务器
4.关闭服务器
Tomcat部署WEB项目
1.把项目直接复制到webapps目录下
2.配置虚拟路径* 第一种:在tomcat/conf/server.xml/在<Host>标签的中间 配置 <Context path="/itcast" docBase="项目的真实路径" /> * 第二种:在tomcat/conf/Catalina/localhost/xxx.xml文件,文件的名称作为虚拟路径(访问路径),在xxx文件中编写<Context docBase="项目的真实路径" />
WEB的通信和配置虚拟主机
HTTP的协议
1.什么是HTTP的协议:
2.HTTP的请求* 请求行* 请求方式* 常用的请求方式有get和post:* get方式把参数列表显示到地址栏上 post封装在请求体中* get方式不安全 post安全* get方式长度有限制 post支持大数据* 请求的地址* 协议版本(HTTP1.0 和 HTTP1.1)* 请求头* if-modified-since 控制本地的缓存* referer 记住来源(防止盗链 统计网页的访问 )* user-agent 判断用的什么浏览器* 空行* 请求体* 封装post提交方式的参数列表
3.HTTP的响应* 响应行* 协议版本* 状态码* 200 一起ok* 302 完成重定向的功能* 304 和两个一起控制缓存* 404 资源不存在(客户端有错误)* 500 服务器内部错误* 状态码描述* 响应头* location 和302一起完成重定向* last-modefied 和if-modified-since和304一起控制缓存* refresh 页面定时刷新* Content-Disposition 文件下载的时候* 禁用浏览器缓存(不用记)* 值是固定的* 空行* 响应体:展示给用户的数据
Servlet技术(重点)
Servlet简介
1.什么是Servlet:以后看javaee的文档。* Servlet是一个接口,下面有5个方法。* Servlet有两个实现类,GenericServlet和HttpServlet
2.Servlet作用:* Servlet是一个小的java程序,运行在服务器端。* Servlet接收和响应从客户端发送过来的请求,使用的HTTP的协议。* Servlet开发中的角色(看图)
编写一个Servlet程序
1.编写一个类,实现Servlet接口,重写5个方法。
2.在web.xml文件中编写Servlet配置文件(记住)<!-- 配置Servlet的信息 --><servlet><!-- 在Servlet起名称(值是任意的) --><servlet-name>ServletDemo1</servlet-name><!-- 配置Servlet类的包名+类名(Class.forName("包名+类名")) --><servlet-class>cn.itcast.servlet.ServletDemo1</servlet-class></servlet><!-- 配置访问的路径 --><servlet-mapping><!-- 配置Servlet的名称(注意:servet-mapping的节点下的servlet-name必须和servlet节点下的servlet-name值是必须相同的) --><servlet-name>ServletDemo1</servlet-name><!-- 配置Servlet的访问路径(值有三种写法)想访问ServletDemo1的程序:http://localhost:80/day09/demo1 --><url-pattern>/demo1</url-pattern></servlet-mapping>3.把day09项目发布到服务器中,启动服务器,访问ServletDemo1的程序。
4.Servlet被访问的浏览器
Servlet生命周期(面试题)
1.什么是生命周期:从人的角度人的出生、服务社会、死亡。
2.Servlet实例的生命周期:从Servlet实例被创建,提供服务,Servlet销毁。在生命周期提供一些方法。
3.生命周期相关的方法* Servlet被创建之后(被服务器创建),立即调用init方法初始化Servlet init()* 从客户端发送过来的任何请求,都会使用service方法进行处理。 service()* Servlet从服务器中移除,调用destroy方法进行销毁的操作. destroy()4.总结:Servlet实例被Tomcat服务器来创建,第一次访问的时候创建(在内存有一个实例(单例模式)),立即调用init方法进行初始化的操作,使用service方法对外提供服务(有一个请求,实例开启一个新线程,处理请求的内容),service有一次请求,service被调用一次。Tomcat服务器关闭或者移除项目的时候,Servlet被销毁,但是在销毁之前调用destroy方法进行一些销毁操作(释放一些资源),调用destory的方法一次。
Servlet在Tomcat服务器怎么运行的
1.看图03
Servlet的类之间的关系
1.Servlet接口
2.GenericServlet实现类
3.HttpServlet实现类Servlet接口|GenericSerlvet (5个方法全部都重写了)|HttpServlet (service方法进行重写了)|MyServlet(相当于重写了5个方法,)4.问题:* 编写一个类继承GenericServlet,里面有两个init方法,重写init重写哪一个呢?* 如果以后想要重写init方法,重写init()方法。* 编写一个类,继承HttpServlet,重写了两个service方法,分别干嘛用?ServletRequest(请求) ServletResponse(响应)| |HttpServletRquest HttpServletResponse* HttpServlet类中有两个service方法,其中一个service的方法的内部,判断请求的方式(get和post),如果是get请求方式,默认调用doGet方法。如果post请求,默认调用doPost的方法。* 现在在网络上就使用两种请求,一种get和post。如果编写一个类,继承HttpServelt,重写doGet和doPost方法。因为service方法默认去调用doGet或者doPost方法。开发中最简单的方式。5.开发Servlet程序(最简单的步骤)* 编写一个类,继承HttpServlet* 重写两个方法doGet和doPost方法* 在web.xml中编写配置文件6.一般的情况下,doGet和doPost方法中的逻辑都是相同,互相调用,简化编程。
修改Servlet开发的模板
1.修改Servlet的模板,先找到MyEclipse的安装路径。
2.找到该jar包com.genuitec.eclipse.wizards.xxx.jar
3.不要解压 -- 右键 -- 用解压工具打开 -- 找templates目录 -- Servlet.java -- 修改该文件 -- 把doGet和doPost方法的注释和代码删除,在doPost方法的里面编写已经 doGet(request,response);
4.重启MyEclipse。创建Servlet程序。
Servlet配置自动加载
1.Servlet是第一次被访问的时候创建Servlet实例,立即调用init方法进行初始化。
2.假如:AServlet(非常销毁时间的操作),第一次访问的时候,需要等待的时间非常长。* 可以配置Servelt自动加载来解决这一类问题。服务器一启动,自动加载Servlet加载。* 在web.xml的配置文件中,在<servlet>标签的中间<!-- 自动加载:服务器一启动,默认加载该类 值是正整数 ,值越小,优先级就越高。 --><load-on-startup>2</load-on-startup>
3.注意:值是正整数,值越小优先级越高。
Servlet配置访问路径
1.学会怎么配置?学会怎么来访问?优先级,谁的优先级高先访问谁。
2.在web.xml中,配置<url-pattern>,怎么来访问Servlet程序。* <url-pattern>/servlet/demo1</url-pattern> -- 完全路径匹配 -- 访问:http://localhost/day09/servlet/demo1* <url-pattern>/*</url-pattern> -- 目录匹配 -- 访问:http://localhost/day09/xxx* <url-pattern>*.do或者 *.action</url-pattern> -- 扩展名 访问:http://localhost/day09/xxx.do3.总结* 完全路径匹配 /demo1 以/开头 访问:http://localhost/day09/demo1* 目录匹配 /* 以/开头 访问:http://localhost/day09/xxx* 扩展名匹配 *.do 不能以/开头 访问:http://localhost/day09/yyy.do4.优先级(一个WEB程序中有多个Servlet程序,到底是访问哪个Servlet呢?)* 完全路径匹配 > 目录匹配 > 扩展名匹配
Servlet开发中WEB阶段的路径问题
1.学习编写路径
2.相对路径和绝对路径* 不能以/开头* 相对路径:当前的这个文件和比对的文件的位置关系。* 在WEB服务器中开发相对路径的写法* 先访问aa.html http://localhost/day09/aa.html* 访问demo5写法 http://localhost/day09/demo5* 在aa.html的文件中直接访问demo5 * <a href="demo5">aa</a><br/> * <a href="./demo5">aa</a><br/>* 先访问bb.html http://localhost/day09/bb/bb.html* 访问demo5写法 http://localhost/day09/demo5* 在bb.html的文件中访问demo5* <a href="../demo5">bb</a><br/>3.总结:相对路径的写法,需要先找这两个文件之间关系。但是如果一旦文件的位置改变了,写的相对的路径写法存在问题。解决这种问题,写绝对路径。 4.编写绝对路径* 以/开头的* http://localhost/day09/demo5* 简便写法: /day09/demo55.在绝对路径中有分成两种* 客户端绝对路径* 包含项目名称 /day09/demo5* 服务器端绝对路径* 不包含项目名称 /demo5
ServletConfig对象
1.和在web.xml的配置文件中相关的一个对象。
2.ServletConfig对象的方法* String getServletName() 获取配置Servlet的名称(<servlet-name>ServletDemo5</servlet-name>) * String getInitParameter(String name) 获取初始化参数* Enumeration getInitParameterNames() 获取初始化参数* ServletContext getServletContext() 获取ServletContext对象3.总结:配置初始化参数只能针对当前的Servlet,不能在其他的Servlet程序中来获取。
ServletContext对象(重要)
ServletContext对象的简介
1.在javaweb的开发中,一共存在(JSP)4个域对象。在Servlet中一共存在3个域对象。
2.学习的第一个域对象。3.ServletContext对象* 一个WEB项目只有一个ServletContext对象* 可以被WEB项目中的所有的Servlet所共享,可以通过ServletContext来传递数据。* 与天地同寿。Tomcat服务器一启动,会为每一个WEB应用创建一个ServletContext对象。服务器关闭的时候ServletContext销毁。
获取ServletContext对象
1.可以通过ServletConfig获取ServletContext对象
2.可以直接使用该方法:ServletContext getServletContext()
域对象
1.域对象可以在多个Servlet中传递数据。以后需要学习JSP技术(JSP和Servlet程序之间通过域对象来传递数据)
2.可以向域对象中存入数据 * setAttribute("属性名称","值"); setAttribute("xx","123") setAttribute("xx","456")
3.可以从域对象中获取数据* Object getAttribute("属性名称");
4.从域对象中删除属性* removeAttribute("属性名称");
获取ServletContext作用
1.获取全局的初始化参数* String getInitParameter(String name) * Enumeration getInitParameterNames() * 配置全局的初始化参数2.实现数据的共享(*****)* void setAttribute(String name, Object object) 设置属性的值* Object getAttribute(String name) 获取属性的值* void removeAttribute(String name) 删除属性的值* Enumeration getAttributeNames() 获取属性的名称们* 统计访问的次数3.读取资源文件(*****) String path的写法* InputStream getResourceAsStream(String path) 通过文件的路径获取文件的输入流* String getRealPath(String path) 通过文件的路径获取文件的绝对磁盘路径4.总结:读取资源文件path路径的写法* 如果db放在src目录下: path = "/WEB-INF/classes/db.proterties";* 如果db放在某个包下: path = "/WEB-INF/classes/cn/itcast/context/db.proterties";* 如果db放在WebRoot目录下: path = "/db.proterties";5.使用类的加载器来读取资源文件
缺省的Servlet(了解)
request和response对象(案例)
转载于:https://www.cnblogs.com/chyxOne/p/9831346.html
java web之servlet相关推荐
- 使用Intellij idea新建Java Web项目(servlet) 原理及初步使用
准备 JDK (配置JDK_HOME\bin 和 CLASSPATH) 注:JDK8下载已经需要注册了,请使用JDK11(现在是官方长期支持的版本) 对于我们新手来说,JD ...
- Java web入门——Servlet
Java web入门--Servlet Servlet基础 Servlet是运行在服务器上的java小程序,B/S架构的应用需要访问数据库.或一些逻辑处理,均由servlet进行处理,他用来扩充基于h ...
- Java Web之Servlet入门
Java Web之Servlet入门 上世纪90年代,随着Internet和浏览器的飞速发展,基于浏览器的B/S模式变得火爆起来. 最初,用户使用浏览器向WEB服务器发送的请求都是请求静态的资源, ...
- 初学Java Web(4)——Servlet学习总结
经过一段时间的学习,对于Servlet有了新的不一样的见解,在这里做一下总结,将近来学习到的知识总结一下. Servlet 的请求流程 浏览器发出请求:http://localhost:80/xxx1 ...
- Java WEB之Servlet学习之路(一)一个最简单的Servlet应用
好久没有更新博客了,有点冷清,主要是最近忙着看Java WEb前段时间都是基础,一些http理论和WEB容器理论,没有什么实践性代码,所以没写代码,现在终于正式开始Servlet编程了,下面就得好好的 ...
- 用servlet路径访问一个html,java web中servlet、jsp、html 互相访问的路径问题
在html">java web种经常出现 404找不到网页的错误,究其原因,一般是访问的路径不对. html">java web中的路径使用按我的分法可以分两种情况,当 ...
- 【博学谷学习记录】超强总结,用心分享|【Java Web】Servlet
目录 什么是Servlet? Servlet快速入门 Servlet的执行过程 Servlet的生命周期 ServletConfig ServletContext 什么是Servlet? Servle ...
- Java Web中用Servlet编写简易计算器
运行效果: 运行结果: 文件目录: CalculateServlet.java中的代码 package com.lyq.servlet;import java.io.IOException; impo ...
- Java web开发——Servlet详细介绍
一.第一个Servlet程序 1.创建Servlet程序 在webapps目录下新建一个serfis的web应用,在serfis下新建一个WEB-INF\classes,在classes新建servl ...
最新文章
- golang内存对齐
- Plate impulse response spatial interpolation with sub-Nyquist sampling
- vivado实现VGA
- bestcoder Delete
- pdfbox创建pdf_PDFBox创建PDF文档
- 判断一个字符串是否为回文-链队(新建,进队,出队),链栈(新建,进栈,出栈)...
- txt形式进行传输WebShell图文演示!
- Mac OS X上安装配置apache服务器
- linux怎么定义程序执行有限级别,linux 内核是什么?
- 操作系统—进程的定义、组成和组织方式(思维导图)
- 2021-08-20JSP内置对象及作用域
- 双系统平板电脑android升级吗,平板电脑双系统好不好 平板电脑双系统优缺点【详细介绍】...
- 哪个计算机无法做到双屏显示,如何实现笔记本电脑的双屏显示
- 机器学习基础 EM算法
- 关于EOF和读文件的一些事
- python 股市 挂单_股票买入挂单高了,隔夜挂单技巧
- 基于二级C语言的一些经典小程序
- 优思学院|精益生产管理的六个关键要素
- 做生信分析平台需要什么配置的服务器?生信分析平台服务器配置建议
- Cscope使用方法小结
热门文章
- amazeui学习笔记--css(常用组件5)--评论列表Comment
- 解决Error: Protected multilib versions:
- 旅游解说系统 VS 旅游信息系统
- vsftpd的简单安装和配置(只有三步)
- WPF 4 动态覆盖图标(Dynamic Overlay Icon)
- c++ map 获取key列表_一日一技:举例说明python中的map()方法
- python读excel字体颜色_python操作excel之设置字体颜色及格式
- python3爬虫入门实例_10个python爬虫入门实例(小结)
- iis10.0 php多版本,IIS7 IIS8 中多个版本php共存的方法
- java 字符串比较 == equals_java怎么比较字符串,==和equals有什么区别