一,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
证明参数已经被后端代码接收
下次我们来做一个简单的系统那就是登录的系统