servlet 中 service ,doGet , doPost 关系

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <display-name>servlet-test</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
      <servlet-name>MySer</servlet-name>
      <servlet-class>test1.MySer</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>MySer</servlet-name>
      <url-pattern>/servlet/MySer</url-pattern>
  </servlet-mapping>
  
</web-app>

mySer


package test1;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MySer extends HttpServlet{
    
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException{
        
        System.out.println("fa");
        if(request.getMethod().equals("POST")){
            doPost(request, response);
        }
        //一个servlet默认会执行service方法,service方法中会转向doget或者dopost(doget,dopost如果被子类覆盖,
        //那个就执行子类的。如果你在子类中覆盖了service 方法,那么是否执行doget或者dopost ,就成为service方法
        //的代码问题了)
    }
    
    
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
        System.out.println("get");
    }
    
    
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        System.out.print("post");
        request.setAttribute("msg", "登陆成功");
        request.getRequestDispatcher("/success.jsp").forward(request, response); 
    //response.sendRedirect("/success.jsp");
    //重定向是客户端发出的请求,所以是response请求,url地址栏改变
    //请求转发是服务端发出的,所以是request请求,url地址栏不变
} }


 

index.jsp

<?xml version="1.0" encoding="utf-8" ?>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Insert title here</title>
</head>
<body>
    <form action="/servlet/MySer" name="f" method="post">
    <input type="text" value="" name="usename"/>
    <input type="password" value="" name="password"/>
    <input type="submit" value="dengl"/>
    </form>
</body>
</html>

需要把 javax.servlet. servlet-api.jar 放到lib下。 

记得把Java build path - source 的 output folder 设置为 项目名/webapp/WEB-INF/classes下

原文地址:https://www.cnblogs.com/zhangchenglzhao/p/4343675.html