1、DispatcherServlet
javapackage com.csdn.mymvc.core; import jakarta.servlet.RequestDispatcher; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Arrays; @WebServlet("/*") public class DispatcherServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String[] staticResourceSuffixes = {".html", ".jsp", ".jpg", ".png", ".gif", ".css", ".js", ".ico"}; String uri = req.getRequestURI(); if (Arrays.stream(staticResourceSuffixes).anyMatch(uri::endsWith)) { RequestDispatcher defaultDispatcher = req.getServletContext().getNamedDispatcher("default"); defaultDispatcher.forward(req,resp); } } }2、web.xml
XMLThe default servlet for all web applications, that serves static resources. It processes all requests that are not mapped to other servlets with servlet mappings (defined either here or in your own web.xml file). 默认servlet是所有Web应用程序的默认servlet,用于提供静态资源。 它处理所有未映射到其他servlet的请求, 这些servlet映射(在此处或您自己的web.xml文件中定义)。
XML<servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>2、FruitServlet
javapackage com.csdn.fruit.servlet; import com.csdn.fruit.dto.PageInfo; import com.csdn.fruit.dto.PageQueryParam; import com.csdn.fruit.dto.Result; import com.csdn.fruit.pojo.Fruit; import com.csdn.fruit.service.FruitService; import com.csdn.fruit.service.impl.FruitServiceImpl; import com.csdn.fruit.util.RequestUtil; import com.csdn.fruit.util.ResponseUtil; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/fruit/*") public class FruitServlet extends HttpServlet { private FruitService fruitService = new FruitServiceImpl(); @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // /fruit/index String uri = req.getRequestURI(); uri = uri.substring(1); String[] split = uri.split("/"); String methodName = split[1]; switch (methodName) { case "index" ->index(req,resp); case "add"-> add(req, resp); case "del"->del(req,resp); case "edit"->edit(req,resp); case "getFname"-> getFname(req, resp); case "update" -> update(req, resp); } } protected void index(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Integer pageNo = 1; String pageNoStr = req.getParameter("pageNo"); if (pageNoStr != null && !"".equals(pageNoStr)) { pageNo = Integer.parseInt(pageNoStr); } String keyword = ""; String keywordStr = req.getParameter("keyword"); if (keywordStr != null) { keyword = keywordStr; } PageQueryParam pageQueryParam = new PageQueryParam(pageNo, 5, keyword); PageInfo<Fruit> pageInfo = fruitService.getFruitPageInfo(pageQueryParam); Result result = Result.OK(pageInfo); ResponseUtil.print(resp, result); } protected void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Fruit fruit = (Fruit) RequestUtil.readObject(req, Fruit.class); fruitService.addFruit(fruit); ResponseUtil.print(resp, Result.OK()); } protected void del(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Integer fid = Integer.parseInt(req.getParameter("fid")); fruitService.delFruit(fid); ResponseUtil.print(resp, Result.OK()); } protected void edit(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Integer fid = Integer.parseInt(req.getParameter("fid")); Fruit fruit = fruitService.getFruitById(fid); ResponseUtil.print(resp, Result.OK(fruit)); } public void getFname(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String fname = req.getParameter("fname"); Fruit fruit = fruitService.getFruitByFname(fname); ResponseUtil.print(resp, fruit == null ? Result.OK() : Result.Fail()); } protected void update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Fruit fruit = (Fruit) RequestUtil.readObject(req, Fruit.class); fruitService.updateFruit(fruit); ResponseUtil.print(resp, Result.OK()); } }
项目实战:设置静态资源放行
丁总学Java2023-11-06 16:38
相关推荐
云原生指北2 小时前
GitHub Copilot SDK 入门:五分钟构建你的第一个 AI AgentLeinwin6 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击薛定谔的悦6 小时前
MQTT通信协议业务层实现的完整开发流程enjoy嚣士7 小时前
springboot之Exel工具类罗超驿7 小时前
独立实现双向链表_LinkedList盐水冰8 小时前
【烘焙坊项目】后端搭建(12) - 订单状态定时处理,来单提醒和顾客催单凸头8 小时前
CompletableFuture 与 Future 对比与实战示例wuqingshun3141598 小时前
线程安全需要保证几个基本特征努力也学不会java8 小时前
【缓存算法】一篇文章带你彻底搞懂面试高频题LRU/LFU攒了一袋星辰8 小时前
高并发强一致性顺序号生成系统 -- SequenceGenerator