Servlet开发

文章目录

  • 1.Servlet的作用
  • 2.1 idea中搭建,部署,运行一个web项目
  • 3.开发步骤
    • 3.1 xml配置:web.xml中配置Servlet
    • 3.2注解方式
  • 4.Tomcat 与Servlet的关系
  • 5.Servlet相关的API
    • 5.1 HttpServletRequest
    • 5.2 HttpServletResponse

1.Servlet的作用

为什么要学习Servlet呢?
Servlet开发_第1张图片

服务资源:
(1)tomcat部署的项目目录中,根目录下,除了WEB-INF文件夹外的,当作前端资源(静态资源)
(2)Servlet后端代码代码提供的动态资源(所谓的动态资源是以代码的方式,解析http请求),返回响应(可以提供动态的body字符串))。

2.1 idea中搭建,部署,运行一个web项目

在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。
Servlet开发_第2张图片
(3)打开Maven面板进行刷新,让web项目设置生效。
(4)配置tomcat,部署项目(和前面部署一样)https://blog.csdn.net/qq_52206533/article/details/115755048
idea中部署web项目,运行tomcat,不需要打包这个步骤。(应用上下文路径是自己指定的)。
(5)启动tomcat
(6)访问资源(输入url访问资源),验证配置是否成功,web项目是否正确,tomcat是否运行正确。

3.开发步骤

3.1 xml配置:web.xml中配置Servlet

 
<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>

3.2注解方式

Servlet开发的步骤

  • 1.使用@WebServlet("/服务资源路径")
  • 2.继承HttpServlet
  • 3.重写XXX的方法,表示提供XXX的服务方法(请求方法)
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>");
    }
}

4.Tomcat 与Servlet的关系

Tomcat是一个web服务器,也是一个Servlet容器,作为servlet容器,管理Servlet对象的生命周期(实例化对象,方法调用)
Tomcat是一个java程序,tomcat提供的是基于java开发的,开发时并不知道要实例化哪个Servlet对象,基于反射来实例化Servlet对象。
扫描项目类加载路径(WEB-INF/classes),使用了Servlet注解的类,再基于反射实例对象。
Servlet开发_第3张图片

1.tomcat自动的解析http协议的数据
2.根据请求的应用上下文路径,查找应用
3.根据服务路径,找Servlet
4.找到Servlet,让Servlet处理http请求,返回响应,调用Servlet对象的的service方法。

5.Servlet相关的API

5.1 HttpServletRequest

(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 的格式一样可以获取到。

5.2 HttpServletResponse

(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>");

你可能感兴趣的:(web开发,tomcat,servlet,maven)