day46_Servlet

本文介绍了Servlet在JavaWeb开发中的基础概念,包括Servlet的定义、创建第一个Servlet程序的过程,如Maven项目结构、依赖管理,以及如何在Tomcat服务器上部署和配置Servlet,实现HTTP请求的接收和响应。
摘要由CSDN通过智能技术生成

今日内容

0 复习昨日
1 Servlet基础
1.1 Servlet介绍
1.2 第一个Servlet
1.3 流程分析
1.4 使用细节
1.5 映射细节
1.6 生命周期
2 HttpServlet
2.1 HTTP请求、响应、状态码
2.2 GET和POST的区别
2.3 HttpServlet

0 复习昨日

1 maven创建-java项目结构
2 maven创建-javaweb项目结构
3 tomcat的端口 8080
ip: 地址,通过地址找到这台电脑/服务器
端口: 应用程序的编号,通过端口找到app

4 tomcat服务器部署项目启动后,访问路径是?
协议://ip:端口/项目名/页面
http://localhost:8080/day45_web/index.html
http://localhost:8080/index.html

5 addres localhost:8080 is already in use 什么意思
端口占用,解决方案:
1) 端口查杀
netstat -ano | findstr 8080
taskkill /f /pid 进程号
2) 改端口号
(我们自己设计端口,最好是8000以上
3) artifact 工件/项目
dependencies 依赖,复数
dependency 依赖,单数

1 Servlet

1.1 介绍

javaweb开发,就是需要服务器接收前端发送的请求,以及请求中的数据,经过处理(jdbc操作),然后向浏览器做出响应.


我们要想在服务器中写java代码来接收请求,做出响应,我们的java代码就得遵循tomcat开发规范


因此Tomcat提供了开发的规范,就是servlet.

Servlet就是运行在服务器上的程序,可交互式的接收服务器的请求,并可以做出响应


总结Servlet的作用:

  • 运行在服务器,是一个服务器端的程序
  • 接收客户端请求,向客户端做出响应
  • 动态网页(jsp)

1.2 第一个Servlet程序

1.2.1 创建web项目

在这里插入图片描述

在这里插入图片描述

补全目录结构
在这里插入图片描述

1.2.2 pom依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.qf</groupId>
  <artifactId>day46_servlet</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!-- java项目打包方式是jar包 -->
  <!-- web项目打包方式是war包 -->
  <packaging>war</packaging>


  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <!-- 引入servlet依赖 -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
    </dependency>
    <!-- 引入jsp依赖 -->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.3.1</version>
    </dependency>
  </dependencies>
</project>

1.2.3 编写Servlet

  • 实现javax.servlet.Servlet接口
  • 重写方法
  • 在核心方法service()里面完成接收请求,做出响应
package com.qf.servlet;

import javax.servlet.*;
import java.io.IOException;

/**
 * --- 天道酬勤 ---
 *
 * @author QiuShiju
 * @desc
 */
public class MyServlet1 implements Servlet {
    @Override
    public void init(ServletConfig config) throws ServletException {}

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    /**
     * 核心方法,服务,在这个方法中可以完成接收请求,做出响应
     * @param req 用来处理请求的对象
     * @param res 用来处理响应的对象
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        // 通过请求对象,可以获得请求的ip
        String ip = req.getRemoteAddr( );
        System.out.println("ip = "+ip );

        // 响应,
        // res.getWriter()获得字符输出流
        // .writer() 写出到浏览器字符(中文可能乱码)
        res.getWriter().write("i'm Response,Hello");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {}
}

1.2.4 配置Servlet

因为服务器中会有很多servlet,浏览器发请求如何确定访问哪一个servlet?

此时就需要做一个映射: 请求路径和servlet类的映射,即发出的请求由哪个servlet类来处理


配置需要写在webapp/WEB-INF/web.xml中

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <!-- 在这里写路径和servlet映射 -->
    <servlet>
        <!-- servlet的名字,任意 -->
        <servlet-name>servlet1</servlet-name>
        <!-- servlet的路径 -->
        <servlet-class>com.qf.servlet.MyServlet1</servlet-class>
    </servlet>

    <!-- 请求路径映射 -->
    <servlet-mapping>
        <!-- 该路径映射的servlet名 -->
        <servlet-name>servlet1</servlet-name>
        <!-- 请求路径的模板,一定要/开头 -->
        <url-pattern>/s1</url-pattern>
    </servlet-mapping>
</web-app>

浏览器发出请求,经过web.xml中配置的信息,

  • 匹配url-pattern>/s1</url-pattern,有该路径则正常访问,无该路径报404
  • 通过servlet-name找到servlet类
  • 再通过servlet-class,找到servlet类路径
  • 该servlet就可以执行service()

1.2.5 部署项目

web项目已经开发完毕,将项目部署到服务器Tomcat

配置Tomcat
在这里插入图片描述

部署项目
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

启动
在这里插入图片描述

发出请求

http://localhost:8080/day46/s1

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

师范大学通信大怨总

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值