静态资源:运行在浏览器端,一成不变的;HTML和CSS,JavaScript都属于静态资源
动态资源:运行在服务器端;编写的JSP和Servlet等都属于动态资源
1.本质上也是一个服务器,也是 一个容器,用来装java代码,web服务器也成为web容器
2.可以实现数据共享功能,将服务器上的数据分享给浏览器
3.采用请求和相应的方式来访问,浏览器发送请求request,服务器端做出相应response.
官网:https://tomcat.apache.org/
文件 5.Tomcat的启动与关闭
startup.bat:启动
shutdown.bat:停止
Neither the JAVA HOME nor the JRE HOME environment variable is defined At least one of these environment variable is needed to run this proaram JAVAHOME和JRE HOME环境变量都没有定义,运行这个程序至少需要这些环境变量中的一个端口号被占用
Caused by: java.net.BindException: Address already in use: bind 主配置文件 conf/server.xml
8080端口:tomcat服务默认端口号.访问url地址后必须手动写:8080
80端口:HTTP协议采用的端口号.访问url地址后不用写:80
方式一:直接复制到webapps下
方式二:修改server.xml文件,在Hose里面添加
方式三:在conf/Catalina/localhost/创建一个xml文件,blog.xml,文件名就是访问地址
8.在idea中配置Tomcat【重点】 创建步骤
找到占用端口的进程并关闭即可,但这种方式可能导致有用的进程被强行关闭,所以不推荐
第一步:cmd打开命令行窗口,执行命令:netstat -aon|findstr “1099”查找占用端口的进程
第二步:根据pid,继续执行命令:taskkill -f -pid 15380关闭该进程
添加创建Servlet的方法a
找不到HttpServlet的包
1.在web/WEB-INF创建一个lib目录
添加到模块库
执行流程:
package com.itheima.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
//Servlet的步骤
//1.编写一个类继承于抽象类:HttpServlet
//2.重写doGet或者doPost方法
//3.使用xml配置或注解的方法配置servlet的访问地址
public class Demo1Servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.设置响应的类型和编码,表示输出的内容是个网页,编码是utf-8
response.setContentType("text/html;charset=UTF-8");
//2.获取响应的打印流,向浏览器打印字符串,用户就可以在浏览器上看到数据
PrintWriter out = response.getWriter();
//3.输出到浏览器上
out.print("你好,我是第一个Servlet");
}
}
web.xml的配置
采用注解的方式demo1 com.itheima.servlet.Demo1Servlet demo1 /demo1
package com.itheima.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
//@WebServlet(name="demo2", urlPatterns = "/demo2")
//@WebServlet("/demo2"):value省略,也可以
@WebServlet({"/demo2","/demo2000"})
public class Dome2Servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.设置响应的类型和编码
response.setContentType("text/html; charset=utf-8");
//2.获取响应的打印流
PrintWriter out = response.getWriter();
//3.打印到浏览器
out.print("这是第二个Servlet!");
}
}
11.Servlet的生命周期【重点)
Servlet体系结构
Servlet接口中的方法
Servlet生命周期
package com.itheima.servlet;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
//生命周期的三个方法
@WebServlet("/demo3")
public class Demo3Servlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("执行初始化的方法啊...");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest Request, ServletResponse Response) throws ServletException, IOException {
System.out.println("执行服务的方法...");
}
@Override
public String getServletInfo() {
return null;
}
// 销毁的方法:服务器关闭的时候执行一次
@Override
public void destroy() {
System.out.println("执行销毁的方法....");
}
}
12.Servlet映射多个路径
如何配置Servlet的多个访问地址
@WebServlet({"/demo2","/demo2000"})
每个地址必须以"/"开头
Web.xml文件
13.url-pattern的通配符【重点】demo1 com.itheima.servlet.Demo1Servlet demo1 /demo1 /demo100
* 使用通配符的访问地址:
* 1.以/开头:
* 1)
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.设置响应的类型和编码,表示输出的内容是个网页,编码是utf-8
response.setContentType("text/html;charset=UTF-8");
//2.获取响应的打印流,向浏览器打印字符串,用户就可以在浏览器上看到数据
PrintWriter out = response.getWriter();
//3.输出到浏览器上
out.print("你好,我是第一个Servlet");
//读取web.xml中初始化参数---通过参数名获取参数值
String user = getInitParameter("user");
String age = getInitParameter("age");
out.println("用户名:" + user + "
");
out.println("年龄:" + age + "
");
//获取所有的参数名字,返回值类型枚举类型.得到所有的参数名
Enumeration parameterNames = getInitParameterNames();
//遍历参数名字
while (parameterNames.hasMoreElements()){
//获取一个参数名
String name = parameterNames.nextElement();
//获取一个参数值
String value = getInitParameter(name);
//打印输出
out.print("用户名"+name+"参数值"+value+"
");
}
}
}
小结
能够理解web服务器
能够部署tomcat服务器
方式一:
直接复制都爱webapps目录下
方式二:虚拟路径
修改servlet.xml文件,在host元素下配置Context,指定docBase和path属性
方式三:单独的xml文件
在conf/Catalina/localhost下创建一个xml文件,文件名就是访问地址,内容是Context元素能够使用idea编写Servlet
1.创建一个类继承于HttpServlet;
2.重写doGet或doPost方法
3.使用xml配置或@WebServlet指定访问地址



