服务资源:
(1)tomcat部署的项目目录中,根目录下,除了WEB-INF文件夹外的,当作前端资源(静态资源)
(2)Servlet后端代码代码提供的动态资源(所谓的动态资源是以代码的方式,解析http请求),返回响应(可以提供动态的body字符串))。
在web.xml文件中配置Servlet.
(1)首先创建一个Maven项目,然后给pom.xml配置一些参数。
<packaging>warpackaging> //设置为web项目
<dependencies>
<dependency> //web后端开发的Servlet依赖包
<groupId>javax.servletgroupId>
<artifactId>javax.servlet-apiartifactId>
<version>3.1.0version>
<scope>providedscope>
dependency>
dependencies>
(2)设置web项目开发结构需要的web资源文件夹,把webapp文件夹复制粘贴到src下面的main。
(3)打开Maven面板进行刷新,让web项目设置生效。
(4)配置tomcat,部署项目(和前面部署一样)https://blog.csdn.net/qq_52206533/article/details/115755048
idea中部署web项目,运行tomcat,不需要打包这个步骤。(应用上下文路径是自己指定的)。
(5)启动tomcat
(6)访问资源(输入url访问资源),验证配置是否成功,web项目是否正确,tomcat是否运行正确。
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"
metadata-complete="true">
<servlet>
<servlet-name>Helloservlet-name>
<servlet-class>HelloServletservlet-class>
servlet>
<servlet-mapping>
Servlet开发的步骤:
package org.example.servelt;
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;
/**
* Servlet的作用:
* 解析http请求,返回http响应,以带码的方式提供服务资源(动态资源)
*
* 重写的方法,包含两个对象,request response
* 一般是通过request方法来获取http请求的部分信息
* 现在虽然已经有response,但是还没有返回响应的http数据
*我们自己的程序:设置response对象的内容
* tomcat:通过程序方法返回,通过response对象组装成http响应
*
* 注意事项:
* 1.服务路径必须以/开头
* 2.多个Servlet服务路径不能重复
*/
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//所有的Servlet重写的方法都有比较固定的处理
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html");
//模拟响应动态的网页,从其他地方获取(如数据库)
String name="张三";
//通过response对象获取输出流。输出流输出的字符串为body内容
PrintWriter pw=resp.getWriter();
pw.println("<h2>欢迎您 "+name+"h2>");
}
}
Tomcat是一个web服务器,也是一个Servlet容器,作为servlet容器,管理Servlet对象的生命周期(实例化对象,方法调用)
Tomcat是一个java程序,tomcat提供的是基于java开发的,开发时并不知道要实例化哪个Servlet对象,基于反射来实例化Servlet对象。
扫描项目类加载路径(WEB-INF/classes),使用了Servlet注解的类,再基于反射实例对象。
1.tomcat自动的解析http协议的数据
2.根据请求的应用上下文路径,查找应用
3.根据服务路径,找Servlet
4.找到Servlet,让Servlet处理http请求,返回响应,调用Servlet对象的的service方法。
(1)设置请求编码的方法:
req.setCharacterEncoding("UTF-8");
(2)通过请求头的键来获取值
getHeader(String name)
(3)获取请求方法
getMethod()
(4)获取请求数据:通过键来获取值
String getParameter(String name)
这个方法能获取到的数据:
1.获取queryString中的数据
2.Content-Type为application/x-www-form-urlencoded body的格式和queryString 的格式一样可以获取到。
(1)设置请求编码的方法:
resp.setCharacterEncoding("UTF-8");
(2)添加响应头
addHeader(String name,String value)
(3)设置状态码
setStatus(int sc)
不设置是返回200状态码。
(4)设置数据类型
resp.setContentType("text/html");
响应有body,一定要设置数据类型
(5)通过response对象获取输出流。输出流输出的字符串为body内容
PrintWriter pw=resp.getWriter();
pw.println("<h2>欢迎您 "+name+"h2>");