后端修行 - Servlet的理解与使用

因为一直没有接触过后端,在Leader command 下学习了Servlet ,因为理解、使用不足,此文仅供后端新手理解学习

基础概念抽时间补~~~~~~~~~~~~~~~~

入门学习

Result Effect

  • 前端UI - get请求
    在这里插入图片描述
  • 前端UI - psot请求
    在这里插入图片描述
  • 后端控制台输出
    在这里插入图片描述

Area Code

  • 创建Servlet继承HttpServlet - FirstServlet
package servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class FirstServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("doGet");
        response.setContentType("text/html");
        PrintWriter writer = response.getWriter();
        writer.println("Hello boy");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("doPost");
        response.setContentType("text/html");
        PrintWriter writer = response.getWriter();
        writer.println("Hello Girl");
    }
}
  • WEB-INF 注册Servlet - web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
		  http://java.sun.com/xml/ns/javaee/web-app_4_0.xsd"
         version="3.0"
>
    <!-- servlet 定义 -->
    <servlet>
        <servlet-name>FirstServlet</servlet-name>
        <servlet-class>servlet.FirstServlet</servlet-class>
    </servlet>
    <!-- servlet 映射 -->
    <servlet-mapping>
        <servlet-name>FirstServlet</servlet-name>
        <url-pattern>/servlet/FirstServlet</url-pattern>
    </servlet-mapping>
</web-app>
  • 调用者 → 可以是jsp、html - index.jsp(这里我是前后端未分离的状态)
<%@ page contentType="text/html; charset=UTF-8" language="java" %>

<html>
<head>
</head>
<body>

<h1><a href="servlet/FirstServlet">Get Servlet 请求方式</a></h1>

<form action="servlet/FirstServlet" method="post">
    <input type="submit" value="Post Servlet 请求方式"/>
</form>

</body>
</html>

开发注意

  • Servlet、HttpServlet的方法调用不到

解决方式 → 导入jar包
在这里插入图片描述
如本机已安装tomcat,可以去tomcat下的lib文件夹找到jar包,然后粘到项目下的lib包即可(当然记得添加libraries~)
在这里插入图片描述

  • web.xml

示例代码

    <!-- servlet 定义 -->
    <servlet>
        <servlet-name>FirstServlet</servlet-name>
        <servlet-class>servlet.FirstServlet</servlet-class>
    </servlet>
    <!-- servlet 映射 -->
    <servlet-mapping>
        <servlet-name>FirstServlet</servlet-name>
        <url-pattern>/servlet/FirstServlet</url-pattern>
    </servlet-mapping>

1.servlet 与 servlet-mapping 中 servlet-name的值必须相同
2.servlet内 servlet-class 是Servlet的路径,不然无法找到
3.servlet-mapping内 url-pattern 最前方的 / 若有则是绝对路径,如无则是相对路径

  • web.xml - Servlet的访问顺序(虽然图比较老,但是知识应该没老 ~)
    在这里插入图片描述

实践过程

Result Effect

  • 前端登录UI
    在这里插入图片描述
  • 前端请求成功UI
    在这里插入图片描述
  • 前端请求失败UI
    在这里插入图片描述
  • 后端控制台输出
    在这里插入图片描述

Area Code

  • LoginServlet
package servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class LoginServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("doGet请求");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println("doPost请求");
        System.out.println("帐户:"+username);
        System.out.println("密码:"+password);
        if (username!=""&&password!=""){
            request.getRequestDispatcher("/success.html").forward(request, response);
        }else{
            request.getRequestDispatcher("/unsuccess.html").forward(request, response);
        }
    }
}
  • web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
		  http://java.sun.com/xml/ns/javaee/web-app_4_0.xsd"
         version="3.0"
>

   <!-- servlet 定义 -->
    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>servlet.LoginServlet</servlet-class>
    </servlet>
  <!-- servlet 映射 -->
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/servlet/LoginServlet</url-pattern>
    </servlet-mapping>
</web-app>
  • success.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <meta http-equiv="content-type" content="txt/html; charset=utf-8" />
    <title>index.html</title>
</head>
<body>
    success!!!
</body>
</html>
  • unsuccess.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <meta http-equiv="content-type" content="txt/html; charset=utf-8" />
    <title>index.html</title>
</head>
<body>
    failed!!!
</body>
</html>
发布了247 篇原创文章 · 获赞 97 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/qq_20451879/article/details/100138316