JavaWeb——HelloServlet

本文介绍了Servlet的基本概念和创建过程,包括如何编写一个HelloServlet类,继承HttpServlet,并实现doGet和doPost方法。此外,还详细阐述了如何配置web.xml文件进行Servlet映射,以及设置Tomcat服务器来运行和测试Servlet程序。同时,提到了解决前端页面乱码问题的方法,通过设置响应头来确保正确的字符编码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Servlet简介

  • Servlet就是sun公司开发动态web的一门技术
  • Sun在这些API中提供了一个接口Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤:
    🔺编写一个类,实现Servlet接口
    🔺把开发好的java类部署到web服务器中。
    把实现了Servlet接口的java程序叫做Servlet

HelloServlet

  • Servlet接口Sun公司有两个默认的实现类:HttpServlet,GenericServlet

1.关于Maven父子工程的理解

  • 父项目中会有
 <modules>
        <module>servlet-01</module>
    </modules>
  • 子项目中会有
<parent>
        <artifactId>javaweb-02-servlet</artifactId>
        <groupId>com.kuang</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
  • 父项目中的java子项目可以直接使用
son extends father

1.新建一个web项目

在这里插入图片描述

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

2.修改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_4_0.xsd"
         version="4.0"
         metadata-complete="true">
</web-app>

3.将maven的结构搭建完整

在main下新建java和resources目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.编写一个servlet程序

  • 新建一个包com.kuang.servlet
    在这里插入图片描述

  • 新建一个类HelloServlet
    在这里插入图片描述

package com.kuang.servlet;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class HelloServlet extends HttpServlet {

    //由于get和post只是请求实现的不同的方式,可以相互调用,业务逻辑都一样
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


//        ServletOutputStream outputStream = resp.getOutputStream();
        PrintWriter writer = resp.getWriter();//响应流
        writer.print("HelloServlet");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

5.编写Servlet的映射

为什么需要映射:我们写的是Java程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web服务中注册我们写的Servlet,还需要给他一个浏览器能够访问的路径

web.xml

<!--    注册Servlet
            servlet-class:注册哪个类,写全限定名(包名+类名)
-->
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.kuang.servlet.HelloServlet</servlet-class>
    </servlet>
<!--    Servlet的请求路径
            url-pattern:请求的路径
-->
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

在这里插入图片描述

6.配置Tomcat

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

7.启动测试

在这里插入图片描述

查看信息

在这里插入图片描述

根据自己的理解介绍一些信息

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

解决前端页面乱码问题

resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8");

在这里插入图片描述

### JavaWeb 中 HTTP 协议使用教程 #### 一、HTTP协议简介 Hyper Text Transfer Protocol (HTTP),即超文本传输协议,定义了浏览器和服务器之间的数据交换规则。该协议基于TCP/IP协议栈工作,在每一次交互过程中遵循求-响应模式[^4]。 #### 二、HTTP求结构解析 当客户端发起一个HTTP求时,通常会包含以下几个部分: 1. **求行** - 求方法(如`GET`, `POST`) - 资源路径(URL的一部分) - 协议版本号(通常是HTTP/1.1) 2. **头部字段** - 用户代理(User-Agent): 客户端软件的信息描述 - 接受的内容类型(Accept): 表明可以接受哪些类型的文档 3. **主体内容(仅限某些求方法)** - POST求可能会携带表单数据或其他形式的数据体作为求的一部分[^1]。 ```http POST /login HTTP/1.1 Host: www.example.com Content-Type: application/x-www-form-urlencoded Content-Length: 27 username=admin&password=secret ``` #### 三、常用HTTP求方式对比 常见的HTTP求方式主要有两种——`GET` 和 `POST`: - `GET`: 参数通过URL传递给服务端,适合用于获取资源而不改变其状态的操作;安全性较低因为参数暴露在外。 - `POST`: 数据被封装到求体内提交至服务器,适用于涉及敏感信息或大量数据上传的情况;相对更加安全[^5]。 #### 四、构建简单的Servlet来处理HTTP求 为了更好地理解和实践上述概念,下面给出一段利用Java Servlet API实现基本功能的例子: ```java import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/hello") public class HelloServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应编码格式为UTF-8并指定返回JSON字符串 response.setContentType("application/json;charset=UTF-8"); String name = request.getParameter("name"); // 获取查询参数 if(name != null && !"".equals(name.trim())){ response.getWriter().write("{\"message\":\"Hello " + name + "\"}"); }else{ response.getWriter().write("{\"error\":\"Name parameter is required.\"}"); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 这里可以根据实际需求编写业务逻辑... doGet(request,response); } } ``` 这段代码展示了如何创建一个名为`HelloServlet`的服务程序,它能够接收来自用户的姓名(`name`)并通过JSON格式回应一条问候语句。如果未提供有效的名字,则提示错误信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值