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

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

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

相关推荐
我登哥MVP41 分钟前
【SpringMVC笔记】 - 9 - 异常处理器
java·spring boot·spring·servlet·tomcat·maven
DianSan_ERP43 分钟前
淘宝订单接口集成中如何正确处理消费者敏感信息的安全与合规问题?
大数据·运维·网络·人工智能·安全·servlet
Yeh2020581 天前
servlet简介
servlet
遗憾于风中1 天前
servlet原理
servlet
我登哥MVP2 天前
【SpringMVC笔记】 - 8 - 文件上传与下载
java·spring boot·spring·servlet·tomcat·maven
Java成神之路-3 天前
一文搞懂 Servlet:定义、执行流程与生命周期全解析
servlet
人道领域4 天前
【黑马点评日记02】Redis缓存优化:商户查询性能提升百倍
java·spring boot·spring·servlet·tomcat·intellij-idea
m0_744724934 天前
Servlet原理
servlet
lifewange4 天前
Jenkins Windows MSI 安装包完整安装教程
windows·servlet·jenkins
我登哥MVP4 天前
【SpringMVC笔记】 - 6 - RESTFul编程风格
java·spring boot·spring·servlet·tomcat·maven·restful