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


     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. }

  • 相关阅读:
    HCIA --- VLAN实验配置
    多商户商城系统功能拆解20讲-平台端分销概况
    stream流的使用
    Python语法--列表(类似数组)
    Java版分布式微服务云开发架构 Spring Cloud+Spring Boot+Mybatis 电子招标采购系统功能清单
    基于springboot汽车租赁系统
    平面运动机器人的传感器外参标定
    Leetcode刷题详解——找到字符串中所有字母异位词
    分时进程调度和事件触发的进程调度系统
    flutter中读取sdcard里面的图片跟视频
  • 原文地址:https://blog.csdn.net/m0_65152767/article/details/134235090