国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

項(xiàng)目實(shí)戰(zhàn):設(shè)置靜態(tài)資源放行

這篇具有很好參考價(jià)值的文章主要介紹了項(xiàng)目實(shí)戰(zhàn):設(shè)置靜態(tài)資源放行。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

?1、DispatcherServlet

package 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

項(xiàng)目實(shí)戰(zhàn):設(shè)置靜態(tài)資源放行,# IOC_MVC,getRequestURI,stream,Arrays,anyMatch,endsWith,forward,Java文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-745568.html

The 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).
默認(rèn)servlet是所有Web應(yīng)用程序的默認(rèn)servlet,用于提供靜態(tài)資源。
它處理所有未映射到其他servlet的請(qǐng)求,
這些servlet映射(在此處或您自己的web.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?

package 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());
    }
}

到了這里,關(guān)于項(xiàng)目實(shí)戰(zhàn):設(shè)置靜態(tài)資源放行的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringBoot訪問(wèn)靜態(tài)資源和jar外部靜態(tài)資源,部署前端打包后的vue項(xiàng)目放入靜態(tài)資源里

    SpringBoot訪問(wèn)靜態(tài)資源和jar外部靜態(tài)資源,部署前端打包后的vue項(xiàng)目放入靜態(tài)資源里

    記錄一下使用SpringBoot訪問(wèn)靜態(tài)資源和SpringBoot打包之后的jar外部靜態(tài)資源,在開(kāi)發(fā)的時(shí)候,一般選擇前后端分離的方式,前端使用vue 后端使用SpringBoot,通常情況下,部署都是前端通過(guò)http去請(qǐng)求后端資源,涉及到http請(qǐng)求,那么肯定需要資源的目標(biāo)地址IP,一般云端部署給到I

    2024年02月09日
    瀏覽(23)
  • vue項(xiàng)目靜態(tài)文件資源下載

    vue項(xiàng)目靜態(tài)文件資源下載

    業(yè)務(wù)場(chǎng)景:頁(yè)面有一個(gè)導(dǎo)入功能,需要一個(gè)模板文件供下載,文件放在本地。 對(duì)于 Vue 3 + Vite 項(xiàng)目,使用 require 方法來(lái)導(dǎo)入模塊是不被支持的。require 是 CommonJS 規(guī)范中用于模塊導(dǎo)入的方法,在 Webpack 等構(gòu)建工具中常用。 Vite 使用 ES 模塊規(guī)范,并且支持動(dòng)態(tài)導(dǎo)入(Dynamic Import)

    2024年02月11日
    瀏覽(34)
  • SpringBoot 讀取項(xiàng)目中靜態(tài)資源文件

    SpringBoot 讀取項(xiàng)目中靜態(tài)資源文件

    PathMatchingResourcePatternResolver是一個(gè) Ant模式通配符 的Resource查找器,可以用來(lái)查找類路徑下或者文件系統(tǒng)中的資源。 ???在SpringBoot中盡量 避免使用 ResourceUtils讀取資源文件。 ResourceUtils.getFile() 獲取的是資源文件的絕對(duì)路徑,當(dāng)項(xiàng)目打包為jar或者war包之后部署,資源文件的絕對(duì)

    2024年02月07日
    瀏覽(25)
  • Flask項(xiàng)目打包為exe(附帶項(xiàng)目資源,靜態(tài)文件)

    Flask項(xiàng)目打包為exe(附帶項(xiàng)目資源,靜態(tài)文件)

    運(yùn)行以下命令來(lái)使用 PyInstaller 根據(jù) my_app.spec 文件打包flask應(yīng)用程序:

    2024年02月14日
    瀏覽(21)
  • 如何在Vite項(xiàng)目中處理靜態(tài)資源

    如何在Vite項(xiàng)目中處理靜態(tài)資源

    在前端工程化建設(shè)中,靜態(tài)資源是必須處理的一個(gè)問(wèn)題,前端的靜態(tài)資源通常包括圖片、JSON、Worker 文件、Web Assembly 文件等等。由于靜態(tài)資源本身并不是一個(gè)標(biāo)準(zhǔn)意義上的模塊,因此在處理靜態(tài)資源和代碼時(shí)是需要區(qū)別對(duì)待的。 對(duì)于資源加載問(wèn)題,Vite需要處理的就是如何將

    2023年04月26日
    瀏覽(20)
  • Nginx使用proxy_cache指令設(shè)置反向代理緩存靜態(tài)資源

    Nginx使用proxy_cache指令設(shè)置反向代理緩存靜態(tài)資源

    CentOS7中解壓tar包的方式安裝Nginx: CentOS7中解壓tar包的方式安裝Nginx_centos7 tar文件 怎么load_霸道流氓氣質(zhì)的博客-CSDN博客 參考上面流程實(shí)現(xiàn)搭建Nginx的基礎(chǔ)上,實(shí)現(xiàn)靜態(tài)資源的緩存設(shè)置。 注意上面安裝時(shí)的目錄是在/opt/nginx目錄下,這里是在/usr/local/nginx目錄下。 nginx作為一款高

    2024年02月14日
    瀏覽(22)
  • vue項(xiàng)目 前端加前綴(包括頁(yè)面及靜態(tài)資源)

    具體步驟 (1)更改router模式,添加前綴 位置:router文件夾下面的index.js (2)實(shí)現(xiàn)靜態(tài)文件加前綴 位置:vue.config.js 靜態(tài)資源css,js之類的的src或href引用位置會(huì)加上這個(gè)前綴,會(huì)體現(xiàn)在打包后的index.html文件內(nèi)容 例如 (3)nignx配置

    2024年02月04日
    瀏覽(52)
  • flutter項(xiàng)目引入本地靜態(tài)圖片資源并展示

    flutter項(xiàng)目引入本地靜態(tài)圖片資源并展示

    想要在flutter中引入靜態(tài)資源,需要配置pubspec.yaml,將本地的靜態(tài)資源添加到assets下面: 然后在flutter引入這些靜態(tài)資源:? 就可以在app中看到這個(gè)圖片了:? 也可以使用網(wǎng)絡(luò)圖片:

    2024年02月05日
    瀏覽(22)
  • vue項(xiàng)目中下載靜態(tài)資源里的pdf文件

    vue項(xiàng)目中下載靜態(tài)資源里的pdf文件

    1.把文件放在項(xiàng)目目錄src/assets文件下 2.在項(xiàng)目是用a標(biāo)簽下載 以上項(xiàng)目運(yùn)行會(huì)報(bào)錯(cuò) Failed to compile. ./src/assets/download.pdf 1:0 Module parse failed: Unexpected token (1:0) You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#load

    2024年02月20日
    瀏覽(22)
  • SpringBoot項(xiàng)目修改中靜態(tài)資源,只需刷新頁(yè)面無(wú)需重啟項(xiàng)目(附贈(zèng)—熱加載)

    SpringBoot項(xiàng)目修改中靜態(tài)資源,只需刷新頁(yè)面無(wú)需重啟項(xiàng)目(附贈(zèng)—熱加載)

    ??初衷?? ? ? ? 因?yàn)橐槐楸樾薷牟⒅貑㈨?xiàng)目覺(jué)得很麻煩,所以剛開(kāi)始就自己給項(xiàng)目配置了熱加載,但奈何代碼更新還是慢,還不如我重啟一遍項(xiàng)目的速度,所以放棄了自己上網(wǎng)找到的熱加載配置。直到我debugger前端代碼時(shí),問(wèn)題出現(xiàn)了,因?yàn)槲翼?xiàng)目的前后端沒(méi)有分離,所以

    2024年02月14日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包