赞
踩
目录
HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则
基于TCP协议:面向连接,安全
基于请求-响应模型的:一次请求对应一次响应
HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。
优缺点:
缺点:多次请求间不能共享数据。
Java解决方式:使用会话技术(cookie、Session)来解决。
优点:速度快
请求数据的第一行。其中GET表示请求方式,/表示请求资源路径,HTTP/1.1表示协议版本
第二行开始,格式为key:value形式
POST请求的最后一部分,存放请求参数。
Host: 表示请求的主机名
User-Agent: 浏览器版本,例如Chrome浏览器的标识类似Mozilla/5.0.Chrome/79,IE浏览器的标识类似Mozilla/5.0(Windows NT .) like Gecko;
Accept:表示浏览器能接收的资源类型,如text/ *
,image/
*或者*/*
表示所有
Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;
Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip,deflate等。
GET请求:
请求参数在请求行中,没有请求体。
请求参数大小有限制
POST请求:
请求参数在请求体中
请求参数大小无限制
响应数据的第一行。其中HTTP/1.1表示协议版本,200表示响应状态码,OK表示状态码描述
第二行开始,格式为key:value形式
最后一部分。存放响应数据
状态码分类 | 说明 |
---|---|
1xx | 响应中——临时状态码,表示请求已经接受,告诉客户端应该继续请求或者如果它已经完成则忽略它 |
2xx | 成功——表示请求已经被成功接收,处理已完成 |
3xx | 重定向——重定向到其它地方:它让客户端再发起一个请求以完成整个处理。 |
4xx | 客户端错误——处理发生错误,责任在客户端,如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等 |
5xx | 服务器端错误——处理发生错误,责任在服务端,如:服务端抛出异常,路由出错,HTTP版本不支持等 |
具体状态码:状态 | Status - HTTP 中文开发手册 - 开发者手册 - 腾讯云开发者社区-腾讯云
Content-Type:表示该响应内容的类型,例如text/html,image/jpeg;
Content-Length:表示该响应内容的长度(字节数);
Content-Encoding:表示该响应压缩算法,例如gzip;
Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒
Web服务器是一个应用程序(软件),对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开 发更加便捷。主要功能是“提供网上信息浏览服务”
常见web服务器软件:
Apache Tomcat
jetty
WebLogic
WebSphere
...
主要作用:
封装HTTP协议,简化开发。
可将web项目部署到服务器上,对外提供网上浏览服务。
Tomcat是Apache 软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范。
Tomcat 也被称为 Web容器、Servlet容器。Servlet 需要依赖于 Tomcat才能运行
javaEE:
Java Enterprise Edition,Java企业版。指java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、JavaIDL、JTS、JTA、JavaMail、JAF。
官网下载
选好版本下载即可,源码也可下载,在后面
下载完解压即可
目录文件说明:
bin目录,startup
.bat:window系统
.sh:Linux系统
之后在浏览器网址输入localhost:8080查看是否成功
控制台乱码解决:
conf/logging.properties
端口号被占用:
方式一:
找到对应程序,将其关闭
Windows10关闭占用某一端口号的进程_windows10 停止端口-CSDN博客
方式二:
更改启动端口号
窗口闪退:
检查JAVA-HOME环境变量
命令窗口X:强制关闭(相当于直接按掉电脑电源)
shutdown:正常关闭
Ctrl + c:正常关闭
删掉Tomcat文件目录即可
将项目放置到 webapps 目录下即部署完成
一般JavaWeb项目会被打成war包,然后将war包放到 webapps目录下,Tomcat会自动解压缩 war文件
访问:服务器ip地址/端口号/项目名称/资源文件
修改启动端口号:
conf/server.xml:port
HTTP协议默认端口号为80,如果将Tomcat端口号改为80,则将来访问Tomcat时,将不用输入端口号
相对与Maven项目,多了一个webapp目录
项目名称
src
main
java
resources
webapp:web项目特有(名称可改,但没必要)
html:html文件目录(可自定)
WEB—INF(web项目核心,不能修改名称)
web.xml(web配置文件)
test
pom
打包方式为war
项目名称:项目访问路径(虚拟目录)
html
WEB—INF
classes:存放Java字节码文件和resources资源文件
lib:项目所需jar包(pom.xml中依赖坐标对应的jar包)
web.xml
勾选使用骨架后选择后缀为webapp的,注意不是下图的
是这个!!!
等待下载完成
完成后目录结构
如果觉得不好看可点下图的
之后pom文件,从12行开始,到结束可以全部删掉
之后根据上边的项目结构补齐即可
创建Maven项目
pom中更改打包方式
之后点击+号添加xml文件即可,如果目录位置不对自己拖一下或者改一下就行了
运行后测试即可
插件名:Maven helper
使用方式:
先下载Maven helper插件
在pom中添加tomcat依赖
alt + ins,选择引入插件模板
- <!-- tomcat插件-->
- <plugin>
- <groupId>org.apache.tomcat.maven</groupId>
- <artifactId>tomcat7-maven-plugin</artifactId>
- <version>2.2</version>
- <!-- 配置,可选-->
- <configuration>
- <!-- 端口号-->
- <port>8080</port>
- <!-- 资源路径-->
- <path>/</path>
- </configuration>
- </plugin>
之后
插件加载慢/没有内容的解决方案:
方式一:设置资源网址+代理
之后找到国内镜像网址:plugins.jetbrains.com/plugins/list?channel=alpha&pluginId=5047
添加即可
连接不稳定的话多尝试几次,实在不行就看方式二
方式二:
直接访问JetBrains Marketplace:如果访问不到检查一下网络~
搜索插件,并下载到本地
IDEA安装本地插件
手动唯一不好的是需要自己匹配版本,也不难,网上搜一下就知道了~
运行一下发现报错了:
报错信息:
打开该目录,发现没有setting.xml文件
解决方式:
方式一:
从别的地方粘一个setting.xml文件
方式二:
该目录下新建一个setting.xml,将内容粘过来
方式三:
去掉√,使用默认配置文件
方式四:
使用本地maven的配置文件
运行:
Servlet 是 Java提供的一门动态web资源开发技术
Servlet 是JavaEE 规范之一,其实就是一个接口,将来我们需要定义Servlet类实现Servlet接口,并由web服务器运行Servlet
动态web资源:HTML、CSS、JS、图片、音频、视频等
静态web资源:不同类用户浏览到的内容不一样,最明显的举例VIP~
创建web项目,导入Servlet依赖坐标
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.1.0</version>
- <!-- tomcat自带了Servlet的jar包,避免冲突-->
- <scope>provided</scope>
- </dependency>
创建一个类,实现servlet接口,并重写接口中的所有方法
在类上使用@WebServlet注解,配置该Servlet的访问路径
- @WebServlet("/demo")
- public class demo implements Servlet {
-
- public void init(ServletConfig servletConfig) throws ServletException {
-
- }
-
- /**
- * 获取ServletConfig对象
- * @return ServletConfig对象
- */
- public ServletConfig getServletConfig() {
- return null;
- }
- /**
- * Servlet被访问的时候就会执行
- * @param servletRequest
- * @param servletResponse
- * @throws ServletException
- * @throws IOException
- */
- public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
- System.out.println("hello Servlet");
- }
-
- /**
- * 获取Servlet信息
- * @return Servlet信息
- */
- public String getServletInfo() {
- return null;
- }
-
- /**
- * 销毁Servlet
- * 内存释放、服务器关闭(正常关闭)
- */
- public void destroy() {
- System.out.println("Servlet销毁");
- }
- }
启动Tomcat,浏览器输入URL访问该servlet
[①http://localhost:8080]【②/tomcat_demo_war】{③/demo}
①:访问web服务器Tomcat
②:访问web服务器中的项目
③:访问对应的Servlet
Tomcat创建Servlet对象
Tomcat调用Servlet对象的service方法
服务器怎么知道Servlet中一定有service方法?
因为自定义的Servlet,必须实现Servlet接口并重写其方法,而Servlet接口中有service方法
对象的生命周期指一个对象从被创建到被销毁的整个过程
Servlet运行在Servlet容器(web服务器)中,其生命周期由容器来管理,分为4个阶段:
加载和实例化:默认情况下,当servlet第一次被访问时,由容器创建Servlet对象
- //通过以下方式更改
- @WebServlet(urlPatterns = "/demo" loadOnStartup =1)
- //负整数:第一次被访问时创建Servet对象(默认)
- //0或正整数:服务器启动时创建Servlet对象数字越小优先级越高
初始化:在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象,完成一些如加载配置文件、创建连接等初始化的工作。该方法只调用一次
请求处理:每次请求servlet时,Servlet容器都会调用Servlet的service()方法对请求进行处理服务
终止:当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法完成资源的释放。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收,只调用一次
内存释放、服务器关闭的时候(正常关闭),Servlet对象会被销毁,调用destroy()方法
B/S架构的web项目:自定义Servlet,会继承HttpServlet
根据不同请求执行不同方法
- public class demo02 extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- //
- }
-
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- //
- }
- }
Servlet 要想被访问,必须配置其访问路径(urlPattern)
1.一个Servlet,可以配置多个 urlPattern
@WebServlet(urlPatterns ={"/demo1","/demo2"})
2.urlPattern 配置规则
精确匹配
配置路径:
@WebServlet(urlPatterns ="/users/peter")
访问路径:
http://localhost:8080/users/peter
目录匹配
配置路径:
@WebServlet(urlPatterns ="/users/*")
访问路径:
- http://localhost:8080/users/peter
- http://localhost:8080/users/tom
- ...
扩展名匹配
配置路径:
@WebServlet(urlPatterns ="*.jpg")
访问路径:
- http://localhost:8080/users/peter.jpg
- http://localhost:8080/users/a.jpg
- ....
任意匹配
配置路径:
- @WebServlet(urlPatterns ="/")
- @WebServlet(urlPatterns ="/*")
访问路径:
http://localhost:8080/users/*
/和 /* 区别:
当我们的项目中的Servet配置了“/”,会覆盖掉tomcat中的DefaultServet,当其他的 url-pattern都匹配不上时都会走这个Servlet,会导致一些静态资源访问不到
当我们的项目中配置了“/*”,意味着匹配任意访问路径
越精准优先级越高:精确>目录>拓展>/*>/
编写Servlet类
在web.xml中配置该Servlet
- <servlet>
- <servlet-name>demo5</servlet-name>
- <servlet-class>com.itheima.web.servlet,ServletDemo5</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>demo5</servlet-name>
- <url-pattern>/demo5k</url-pattern>
- </servlet-mapping>
编写Servlet类(通过实现Servlet接口或继承HttpServlet都可)
在该类上方添加注解:@WebServlet("/demo")
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。