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

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

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

相关推荐
路在脚下@4 小时前
Springboot 的Servlet Web 应用、响应式 Web 应用(Reactive)以及非 Web 应用(None)的特点和适用场景
java·spring boot·servlet
憶巷8 小时前
Servlet的生命周期
servlet
Wx-bishekaifayuan14 小时前
springboot市社保局社保信息管理与分析系统-计算机设计毕业源码03479
java·css·spring boot·spring·spring cloud·servlet·guava
U12Euphoria21 小时前
java项目-jenkins任务的创建和执行
java·servlet·jenkins
Wx-bishekaifayuan1 天前
PHP动物收容所管理系统-计算机设计毕业源码94164
java·css·spring boot·spring·spring cloud·servlet·php
Blood_J2 天前
Jenkins配置步骤
运维·servlet·jenkins
乌啼霜满天2492 天前
tomcat与servlet版本对应关系
java·servlet·tomcat
一二小选手2 天前
【Java Web】EL表达式
java·servlet·el
像污秽一样3 天前
基于Servlet实现MVC
servlet·mvc
爬山算法4 天前
Tomcat(6) 什么是Servlet容器?
java·servlet·tomcat