JavaWeb(Servlet编程)第二章

一,doGet()方法和doPost()方法的使用

对于之前的doGet()方法和doPost()方法,我给大家分享一个我的记忆方法,在Servlet类当中我们要重写这些方法但是在重写的时候会不知道重写哪个方法,我的理解是如果没有参数的传递也就是在前后端之间没有使用form表格或者传递参数,那么就使用doGet()方法,如果涉及到参数的接收,也就是使用form表单把数据从前端页面传递到后端数据中涉及到参数的接收传递,那么我们就要在后端Servlet类中重写doPost()方法。

这是我的个人见解如果有不对的地方欢迎大家指正我,勿喷喵!

二,实现Servlet的另外两种方法

1.一种是实现Servlet接口

这是Servlet类

java 复制代码
package com.haina.web;

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

public class SecondServlet implements Servlet {


    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        //initialize 用来初始化servlet对象,一个servlet对象在整个程序运行期间,只会初始化一次
        System.out.println("SecondServlet对象创建成功");
    }

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

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        PrintWriter writer=servletResponse.getWriter();
        writer.println("<h1>second</h1>");
        writer.flush();
    }

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

    @Override
    public void destroy() {
        //当servlet对象被销毁的时候,会自动调用该方法
        System.out.println("SecondServlet对象被销毁了");
    }
}

这是xml文件

java 复制代码
<?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">

    
    
    <servlet>
        <servlet-name>second</servlet-name>
        <servlet-class>com.haina.web.SecondServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>second</servlet-name>
        <url-pattern>/aaa</url-pattern>
    </servlet-mapping>
</web-app>

当运行tomcat后就会调用init方法

当我们停止了tomcat的运行,就代表创建的Servlet对象被废除就调用了destroy方法

2.第二种是使用@WebServlet标签

java 复制代码
package com.haina.web;

import javax.jws.WebService;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
import java.io.PrintWriter;

//使用WebServlet注解来替代配置文件的编号,注意,路径仍然必须以斜杠开头
@WebServlet("/ccc")
public class ThirdServlet extends GenericServlet {

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        PrintWriter writer=servletResponse.getWriter();
        writer.println("<h1>third</h1>");
        writer.flush();
    }
}
复制代码
这种方法是使用频率最高的因为它使用起来更加便利简单,我们程序员的原则中要会原理,化繁为简。

这种方法在运行tomcat后之间在网页地址栏中加上标签括号中的内容就好了。不用去配置xml文件,之后的一些代码也是主要用这种方法来实现Servlet的

三,页面间传递参数

常用获取表单信息方法:

通过HttpServletRequest的getParameter()方法来获得客户端传递过来的数据,getParameter()方法返回一个字符串类型的值

java 复制代码
<%--
  Created by IntelliJ IDEA.
  User: ***
  Date: 2024/10/9
  Time: 19:27
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<form action="login" method="post">
    username:<input type="text" name="username">
    <br/>
    password:<input type="password" name="password">
    <br/>
    <input type="submit" value="login">
</form>
</body>
</html>
java 复制代码
package com.haina.web;

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;

@WebServlet("/login")
public class Test extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        System.out.println(username);
        System.out.println(password);
    }
}

一个简单的演示。看运行结果

点击login

证明参数已经被后端代码接收

下次我们来做一个简单的系统那就是登录的系统

相关推荐
编程小Y5 小时前
Servlet 与 Tomcat 白话全解析:从核心原理到实战部署
java·servlet·tomcat
程序员阿鹏6 小时前
tomcat正常启动但 SpringMVC 控制器无法启动
java·spring·servlet·tomcat·maven·intellij-idea
爱宇阳7 小时前
Jenkins 多语言 Agent 完整部署教程
运维·servlet·jenkins
避避风港1 天前
深入解析Tomcat工作流程与Servlet体系
java·servlet·tomcat
weixin_307779131 天前
高效通知:Jenkins邮件插件完全指南与进阶配置
java·servlet·jenkins
青衫码上行1 天前
【JavaWeb学习 | 第20篇】EL表达式与JSTL标签
java·学习·servlet·java-ee
无名-CODING2 天前
从零手写一个迷你 Tomcat —— 彻底理解 Servlet 容器原理
java·servlet·tomcat
vortex52 天前
【Web开发】从WSGI到Servlet再到Spring Boot
前端·spring boot·servlet
inrgihc2 天前
Spring Boot 注册 Servlet 的五种方法
spring boot·后端·servlet
小年糕是糕手2 天前
【C++】内存管理(上)
java·开发语言·jvm·c++·算法·spring·servlet