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


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

  • 相关阅读:
    spring整合Mybatis-P23,24,25
    算法 数据结构 递归插入排序 java插入排序 递归求解插入排序算法 如何用递归写插入排序 插入排序动图 插入排序优化 数据结构(十)
    Java-1109
    C++笔记之引用折叠规则
    java计算机毕业设计高校人事管理系统源码+mysql数据库+系统+lw文档+部署
    [附源码]java毕业设计校园闲置物品交易
    c++20模块导入module
    Linux实用操作-----快捷键的使用(收藏系列)
    nvm管理不同版本nodejs
    【JAVA基础】专题课(综合案例上)
  • 原文地址:https://blog.csdn.net/m0_65152767/article/details/134235090