• 项目实战:设置静态资源放行


     1、DispatcherServlet

    1. package com.csdn.mymvc.core;
    2. import jakarta.servlet.RequestDispatcher;
    3. import jakarta.servlet.ServletException;
    4. import jakarta.servlet.annotation.WebServlet;
    5. import jakarta.servlet.http.HttpServlet;
    6. import jakarta.servlet.http.HttpServletRequest;
    7. import jakarta.servlet.http.HttpServletResponse;
    8. import java.io.IOException;
    9. import java.util.Arrays;
    10. @WebServlet("/*")
    11. public class DispatcherServlet extends HttpServlet {
    12. @Override
    13. protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    14. String[] staticResourceSuffixes = {".html", ".jsp", ".jpg", ".png", ".gif", ".css", ".js", ".ico"};
    15. String uri = req.getRequestURI();
    16. if (Arrays.stream(staticResourceSuffixes).anyMatch(uri::endsWith)) {
    17. RequestDispatcher defaultDispatcher = req.getServletContext().getNamedDispatcher("default");
    18. defaultDispatcher.forward(req,resp);
    19. }
    20. }
    21. }

     2、web.xml

    1. The default servlet for all web applications, that serves static
    2. resources. It processes all requests that are not mapped to other
    3. servlets with servlet mappings (defined either here or in your own
    4. web.xml file).
    5. 默认servlet是所有Web应用程序的默认servlet,用于提供静态资源。
    6. 它处理所有未映射到其他servlet的请求,
    7. 这些servlet映射(在此处或您自己的web.xml文件中定义)。
    1. <servlet>
    2. <servlet-name>defaultservlet-name>
    3. <servlet-class>org.apache.catalina.servlets.DefaultServletservlet-class>
    4. <init-param>
    5. <param-name>debugparam-name>
    6. <param-value>0param-value>
    7. init-param>
    8. <init-param>
    9. <param-name>listingsparam-name>
    10. <param-value>falseparam-value>
    11. init-param>
    12. <load-on-startup>1load-on-startup>
    13. servlet>

    2、FruitServlet 

    1. package com.csdn.fruit.servlet;
    2. import com.csdn.fruit.dto.PageInfo;
    3. import com.csdn.fruit.dto.PageQueryParam;
    4. import com.csdn.fruit.dto.Result;
    5. import com.csdn.fruit.pojo.Fruit;
    6. import com.csdn.fruit.service.FruitService;
    7. import com.csdn.fruit.service.impl.FruitServiceImpl;
    8. import com.csdn.fruit.util.RequestUtil;
    9. import com.csdn.fruit.util.ResponseUtil;
    10. import jakarta.servlet.ServletException;
    11. import jakarta.servlet.annotation.WebServlet;
    12. import jakarta.servlet.http.HttpServlet;
    13. import jakarta.servlet.http.HttpServletRequest;
    14. import jakarta.servlet.http.HttpServletResponse;
    15. import java.io.IOException;
    16. @WebServlet("/fruit/*")
    17. public class FruitServlet extends HttpServlet {
    18. private FruitService fruitService = new FruitServiceImpl();
    19. @Override
    20. protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    21. // /fruit/index
    22. String uri = req.getRequestURI();
    23. uri = uri.substring(1);
    24. String[] split = uri.split("/");
    25. String methodName = split[1];
    26. switch (methodName) {
    27. case "index" ->index(req,resp);
    28. case "add"-> add(req, resp);
    29. case "del"->del(req,resp);
    30. case "edit"->edit(req,resp);
    31. case "getFname"-> getFname(req, resp);
    32. case "update" -> update(req, resp);
    33. }
    34. }
    35. protected void index(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    36. Integer pageNo = 1;
    37. String pageNoStr = req.getParameter("pageNo");
    38. if (pageNoStr != null && !"".equals(pageNoStr)) {
    39. pageNo = Integer.parseInt(pageNoStr);
    40. }
    41. String keyword = "";
    42. String keywordStr = req.getParameter("keyword");
    43. if (keywordStr != null) {
    44. keyword = keywordStr;
    45. }
    46. PageQueryParam pageQueryParam = new PageQueryParam(pageNo, 5, keyword);
    47. PageInfo pageInfo = fruitService.getFruitPageInfo(pageQueryParam);
    48. Result result = Result.OK(pageInfo);
    49. ResponseUtil.print(resp, result);
    50. }
    51. protected void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    52. Fruit fruit = (Fruit) RequestUtil.readObject(req, Fruit.class);
    53. fruitService.addFruit(fruit);
    54. ResponseUtil.print(resp, Result.OK());
    55. }
    56. protected void del(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    57. Integer fid = Integer.parseInt(req.getParameter("fid"));
    58. fruitService.delFruit(fid);
    59. ResponseUtil.print(resp, Result.OK());
    60. }
    61. protected void edit(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    62. Integer fid = Integer.parseInt(req.getParameter("fid"));
    63. Fruit fruit = fruitService.getFruitById(fid);
    64. ResponseUtil.print(resp, Result.OK(fruit));
    65. }
    66. public void getFname(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    67. String fname = req.getParameter("fname");
    68. Fruit fruit = fruitService.getFruitByFname(fname);
    69. ResponseUtil.print(resp, fruit == null ? Result.OK() : Result.Fail());
    70. }
    71. protected void update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    72. Fruit fruit = (Fruit) RequestUtil.readObject(req, Fruit.class);
    73. fruitService.updateFruit(fruit);
    74. ResponseUtil.print(resp, Result.OK());
    75. }
    76. }

  • 相关阅读:
    Mysql 零宽空格ZWSP,导致表面同一段一摸一样的sql无法查询出相同结果
    欧科云链研究院:仰传统机构之“鼻息”,RWA的关键不在于Web3技术
    vue3(h5适配)做个记录,避免自己以后忘了哈哈
    flink核心之watermarker
    简述《华为数据之道》
    设计模式之装饰模式
    Unity RawImage
    内联函数详解
    Add the installation prefix of “Qt5“ to CMAKE_PREFIX_PATH or set “Qt5_DIR“解决
    WPS/word 表格跨行如何续表、和表的名称
  • 原文地址:https://blog.csdn.net/m0_65152767/article/details/134235090