- tomcat软件安装在linux系统上,用于运行Java程序和web程序(tomcat也叫web服务器,因为tomcat也运行web项目)
tomcat:浏览器和服务器交互的过程

- 根据浏览器URL地址栏中的IP和端口号找到对应的web服务器
- 浏览器以流的形式向服务器发送网络请求,告诉服务器需要哪些资源
GET /JavaWebDemo1/1.jsp HTTP/1.1
- 服务器会解析请求
GET /JavaWebDemo1/1.jsp HTTP/1.1
,将静态网页以流的形式返回给浏览器 - 同时,请求动态的数据,服务器解析后将数据作为响应结果返回到浏览器上
- tomcat中的目录文件

tomcat:虚拟目录的映射
- .将写好的
web
程序交给web
服务器管理,这个过程成为虚拟目录的映射:直接将项目放到webapps
目录中(localhost:端口号/项目名/参数
) - 每次修改
config
目录下的server.xml
文件,tomcat
服务器就要重启读取server.xml
配置文件
计网:5层模型
ISO5层 | 协议 |
---|
应用层 | HTTP,FTP:文件传输协议,SMTP:邮件传输协议 |
传输层 | TCP,UDP |
网络层 | IP |
物理层 | 网络接口 |
链路层 | 硬件 |
计网:HTTP
- http:是超文本传输协议,基于TCP/IP的应用层协议,浏览器和服务器在传输数据时需要遵守http指定的规则
- HTTP请求:客户端向服务器请求一个web资源成为HTTP请求
- HTTP常见状态码:(状态码表示的是服务器对请求的处理结果)
状态码 | 描述 |
---|
100 | 请求成功,客户端要继续提交请求来完成整个操作 |
200 | 成功 |
300 | 为完成整个过程要继续请求,通常是重定向,常见的302,304 |
400 | 客户端出错,常见404 |
500 | 服务器端内部出错,常见500 |
- HTTP1.1允许在一个连接上,请求多个web资源,有7种请求方式:get,post,put,delete,(分别对应CRUD)trace,head,options
i请求方式 | 描述 |
---|
get | 用于请求数据 |
post | 用于提交数据 |
put | 和get很像,用于更新数据 |
delete | 删除数据 |
计网:get/post的区别
get | post |
---|
参数在地址栏可见参数,不安全,所以大众可见的数据用get请求 | 参数在请求头中 |
用于请求数据 | 用于提交数据 |
get请求是基于TCP/IP | post请求是基于TCP/IP |
get请求会有本地缓存,有历史来记录 | post没有本地缓存,没有历史记录 |
get请求只支持URL编码 | post请求支持多种编码 |
servlet
- 配置web.xml文件
- 提问?为什么servlet类中的方法被调用起来了
将请求发送给servlet容器,自动加载xml文件,通过网址映射找到全限定类名,通过反射class.forName(全限定类名)创建对象
<servlet>
<servlet-name>ServletDemo</servlet-name>
<servlet-class>com.taiji.dao.ServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
-
定义:servlet接收前端请求,响应请求的结果给浏览器实现类与网址直接交互,我们一般把实现了servlet接口的类也叫做servlet
-
servlet
的运行过程:
- 客户端发送
HTTP
请求tomcat
,tomcat
解析HTTP
为request
给servlet
容器 servlet
容器将请求发送给servlet
类,调用service
方法处理前端请求request
- 将响应
response
回来的数据由servlet
类传递给容器,容器传递给tomcat
转换为HTTP
,将HTTP
再响应给前端页面


- servlet的作用:
- 接收请求
- 处理请求
- 响应结果
- servlet接口中的方法
void init(ServletConfig var1);
ServletConfig getServletConfig();
void service(ServletRequest var1, ServletResponse var2);
String getServletInfo();
void destroy();
- servlet的生命周期(servlet类只被实例化一次,无论发送多少次请求)
- init(),service(),destory()是生命周期的方法
- init()只在第一次请求时被调用,被调用时,servlet容器会传入servletConfig进行对象初始化(servletConfig可以拿到全局上下文,初始化参数等)
- service()处理请求,在每次接收请求都会执行方法
- destory()销毁servlet对象
9.init()初始化方法中的 servletConfig与servletContext
config
ServletContext servletContext = servletConfig.getServletContext();
String servletName = servletConfig.getServletName();
Enumeration<String> initParameterNames = servletConfig.getInitParameterNames();
String username = servletConfig.getInitParameter("username");
context 全局上下文对象,整个项目中共享一个
String path = servletContext.getRealPath("/web");
String contextPath = servletContext.getContextPath();
String usr = servletContext.getInitParameter("usrename");
String username = servletConfig.getInitParameter("username");
servletContext.setAttribute("username","zs");
Object username1 = servletContext.getAttribute("username");
- 域对象:在servlet容器中有4个域对象
page
,request
,session
,application
,用来在jsp和servlet中传递数据
- page域,只能在同一个类中使用
- request域,可以创建多个,jsp和servlet存取数据时一定要保证是同一个request
- session域,jsp和servlet共享一个session,同一个项目下才可以使用
- application域,可以让在同一tomcat下的项目实现数据存取共享
- httpServlet抽象类对servlet类的功能进行了封装和完善,让开发者只关系业务代码的实现,不需要每次重写5个方法
public class ServletDemoTwo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}