底层支持Socket之间的通信进行数据共享是通过内部web服务器软件(容器:将servet/jsp进行对象的创建,将jsp翻译为java文件,ide将java文件编译为class文件)实现,tomcat 虽然不完全支持javaEE(不支持EJB),但是也是一款能支持web服务器的免费软件
1.通信支持:
利用容器提供的方法,能够轻松让Servlet与Web服务器对话,无需自己建立ServerSocket,监听端口,创建 流等操作。
2.生命周期管理
它会负责加载类,实例化和初始化Servlet,调用Servlet的方法,并使Servlet实 例能够被垃圾回收。
3.多线程处理
容器会自动地为它接收到的每个Servlet请求创建一个新的Java线程。
4.具有安全性:
使用XML部署描述文件来配置安全性(Servlet 3.0开始可以使用注解描述),而不必将其硬编 码写到Servlet或者其它类中
bin:tomcat的可执行目录
conf:tomcat的配置目录
lib:tomcat支持的jar包(本身已经包含了serlvet和jsp包)
为了防止版本冲突,因此当需要在maven项目中提供依赖时需要指定依赖范围为provide
依赖范围:
compile:编译
test:测试
provide:仅仅是当前提供者
logs:日志记录文件
temp:存储临时文件
webapp:存放网站信息(一个网站可以看成是一个文件夹),默认访问root(tomcat_home)
work:存放jsp文件(hello.jsp–>hello_jsp.java–>class文件)
WEB-INF:网站的配置信息,web.xml(配置servet/初始化参数)
闪屏
原因:tomcat启动时从bin目录的start.bat启动,会找java环境变量(JAVA_HOME)
解决:配置JAVA_HOME,添加tomcat的安装目录
启动失败
原因:一个电脑上有多个tomcat,配置了catalina_HOME
解决:不要配置catalina_HOME,只保留一个tomcat
tomcat启动后(http://localhost:8080),tomcat会发送一个请求,携带当前当问数据类型支持的语言
tomcat默认端口:8080
qq:5555
mysql:3306
servlet:针对服务器应用程序开发
其实就是一个单实例多线程的普通java类,能够被web应用服务器解析的一类
通过它的源码是否变化来区分动态资源还是静态资源:
静态资源:Html/css/js/.jpg/gif
动态资源:Servlet
在maven的web工程中,提交一个uri请求,会现在web.xml文件中查询动态资源地址,如果没有,在当前根目录下查询静态资源
Servler是一个接收客户端的请求,处理后回应数据给客户端的(接收客户端的请求,回应服务器的响应)
创建一个maven工程(目录符合web工程结构)
1.在pom.xml下打war包
2.补全目录结构
src
Man
java
Resource
Webapp
WEB-INF
Web.xml
3.创建一个Servlet(必须在pom文件中导入依赖导入javax.servlet-api),配置pom.xml文件
4.0.0
war
com.github.sweeeeeet
tomcat-http
1.0-SNAPSHOT
javax.servlet
javax.servlet-api
3.1.0
provided
4.创建类继承HttpServlet,覆盖doGet():执行get方法提交;覆盖doPost():使用post方法提交
package com.github.sweeeeeet.tomcat;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* Author:sweet
* Created:2019/4/25
* 开发者不new MyFirstServlet(),由tomcat服务器创建对象
*/
public class MyFirstServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置编码
resp.setContentType("text/html;charset=utf-8");
//向浏览器输出内容
resp.getWriter().write("hello,这是我的第一个Servlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
5.配置web.xml文件
MyFirstServlet
com.github.sweeeeeet.tomcat.MyFirstServlet
MyFirstServlet
/myFirstServlet
HelloServlet
com.github.sweeeeeet.tomcat.HelloServlet
HelloServlet
/helloServlet
6.使用maven打成war包,放入tomcat程序中
请求的流程:
1.tomcat 服务器启动–创建Servlet对象
2.将request对象封装到HttpServlet中,成为HttpServletRequest
3.解析HttpServlet中的一些内置方法并初始化
在maven的web工程中,提交一个uri请求,tomcat会优先在web.xml文件中查询动态资源地址,如果没有,在当前根目录下查询静态资源。
/文件名
;在浏览器请求的uri为:http://localhost:8080/文件名/*
;*表示任意路径*.action
;以指定后缀名结尾在映射路径中不能以精确匹配加模糊匹配的方式出现
精确匹配的优先级高于模糊匹配
以指定后缀名结尾的后缀名模糊匹配的优先级最低