• JavaWeb--MVC案例1-------(2)多个请求对应一个Servlet


     1.编写继承了HttpServlet类的CustomerServlet类,并重写doGet()和doPost()方法

    package MVCCases;
    
    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.lang.reflect.Method;
    
    public class CustomerServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            //super.doGet(req, resp);
            doPost(req, resp);
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            //super.doPost(req, resp);
    
            //1.获取servletPath:/add.do 或 /delete.do等
            String servletPath = req.getServletPath();
    
            //2.取出/和.do得到方法名
            String methodName = servletPath.substring(1);
            methodName = methodName.substring(0, methodName.length() - 3);
    
            //3.利用反射获取methodName对应的方法
            Method method = null;
            try {
    
                method = getClass().getDeclaredMethod(methodName,
                        HttpServletRequest.class, HttpServletResponse.class);
                //4.利用发射调用对应的方法
                method.invoke(this, req, resp);
    
            } catch (Exception e) {
                e.printStackTrace();
           resp.sendRedirect("error.jsp");  } } private void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("add"); } private void query(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("query"); } private void delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("delete"); } }

    2.添加jsp和web.xml文件

    <%--
      Created by IntelliJ IDEA.
      User: Skye
      Date: 2017/12/10
      Time: 11:10
      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>
    
        <a href="add.do">ADD</a>
        <br><br>
    
        <a href="query.do">QUERY</a>
        <br><br>
    
        <a href="delete.do">DELETE</a>
        <br><br>
    
    </body>
    </html>
    

      

    <?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_3_1.xsd"
             version="3.1">
    
        <servlet>
            <servlet-name>CustomerServlet</servlet-name>
            <servlet-class>MVCCases.CustomerServlet</servlet-class>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>CustomerServlet</servlet-name>
            <url-pattern>*.do</url-pattern>
        </servlet-mapping>
    </web-app>

    3.编写CustomerServlet类,获取需要调用的方法, 并利用反射获取并调用对应的方法

  • 相关阅读:
    【转】Visual studio 快捷键大全
    C++ 中的权限控制
    论C++11 中vector的N种遍历方法
    c++ 模板仿函数初探
    OBS (open boardcast server)结构分析
    OpenCV学习笔记:opencv_core模块
    [转]C++ new操作符详解
    进程已经被attach debug,如何解除其debug权限?
    dll 在进程中怎么区分的
    树状数组学习笔记
  • 原文地址:https://www.cnblogs.com/SkyeAngel/p/8016624.html
Copyright © 2020-2023  润新知