摘要:瀏覽器的中文數(shù)據(jù)提交給服務(wù)器,以編碼對中文編碼,當(dāng)我在讀取數(shù)據(jù)的時候,拿到的當(dāng)然是亂碼。接下來使用方式傳遞中文數(shù)據(jù),把表單的方式改成即可當(dāng)我們訪問的時候,又出現(xiàn)亂碼了于是我按照上面的方式,把對象設(shè)置編碼為試試結(jié)果還是亂碼。
什么是HttpServletRequest
HttpServletRequest對象代表客戶端的請求,當(dāng)客戶端通過HTTP協(xié)議訪問服務(wù)器時,HTTP請求頭中的所有信息都封裝在這個對象中,開發(fā)人員通過這個對象的方法,可以獲得客戶這些信息。
簡單來說,要得到瀏覽器信息,就找HttpServletRequest對象
HttpServletRequest常用方法 獲得客戶機(jī)【瀏覽器】信息getRequestURL方法返回客戶端發(fā)出請求時的完整URL。
getRequestURI方法返回請求行中的資源名部分。
getQueryString 方法返回請求行中的參數(shù)部分。
getPathInfo方法返回請求URL中的額外路徑信息。額外路徑信息是請求URL中的位于Servlet的路徑之后和查詢參數(shù)之前的內(nèi)容,它以“/”開頭。
getRemoteAddr方法返回發(fā)出請求的客戶機(jī)的IP地址
getRemoteHost方法返回發(fā)出請求的客戶機(jī)的完整主機(jī)名
getRemotePort方法返回客戶機(jī)所使用的網(wǎng)絡(luò)端口號
getLocalAddr方法返回WEB服務(wù)器的IP地址。
getLocalName方法返回WEB服務(wù)器的主機(jī)名
獲得客戶機(jī)請求頭getHeader方法
getHeaders方法
getHeaderNames方法
獲得客戶機(jī)請求參數(shù)(客戶端提交的數(shù)據(jù))getParameter方法
getParameterValues(String name)方法
getParameterNames方法
getParameterMap方法
HttpServletRequest應(yīng)用 防盜鏈什么是防盜鏈呢?比如:我現(xiàn)在有海賊王最新的資源,想要看海賊王的要在我的網(wǎng)頁上看?,F(xiàn)在別的網(wǎng)站的人看到我有海賊王的資源,想要把我的資源粘貼在他自己的網(wǎng)站上。這樣我獨(dú)家的資源就被一個CTRL+C和CTRL+V搶走了?而反盜鏈就是不能被他們CRTL+C和CRTL+V
下面我模擬一下場景?,F(xiàn)在我首頁先有一個超鏈接,指向著海賊王最新資源
當(dāng)我點(diǎn)進(jìn)去,就能看到海賊王最新資源了
其他的人可以通過復(fù)制粘貼我的地址,放到它們的網(wǎng)頁上
這樣我就劃不來啦【我的廣告你來沒看呢!】。想要看我的資源,就必須經(jīng)過我的首頁點(diǎn)進(jìn)去看。
想要實(shí)現(xiàn)這樣的效果,就要獲取Referer這個消息頭,判斷Referer是不是從我的首頁來的。如果不是從我的首頁來的,跳轉(zhuǎn)回我的首頁。
//獲取到網(wǎng)頁是從哪里來的 String referer = request.getHeader("Referer"); //如果不是從我的首頁來或者從地址欄直接訪問的, if ( referer == null || !referer.contains("localhost:8080/zhongfucheng/index.jsp") ) { //回到首頁去 response.sendRedirect("/zhongfucheng/index.jsp"); return; } //能執(zhí)行下面的語句,說明是從我的首頁點(diǎn)擊進(jìn)來的,那沒問題,照常顯示 response.setContentType("text/html;charset=UTF-8"); response.getWriter().write("路飛做了XXXXxxxxxxxxxxxxxxxx");
首先按正常預(yù)想的,別人從首頁點(diǎn)擊我的資源,訪問我海賊王最新的資源
能夠成功訪問到資源
如果我在瀏覽器直接輸入地址【此時Referer是為null的】,我們來看看
跳回到首頁上,不能訪問到海賊王資源
再試試,如果別人粘貼了我的資源url,在它的網(wǎng)頁上掛了一個網(wǎng)址呢。
在別人網(wǎng)頁上點(diǎn)擊的時候
又跳回到了我的首頁了。
表單提交數(shù)據(jù)【通過post方式提交數(shù)據(jù)】文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/68442.html
摘要:前言由于寫的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導(dǎo)航。 前言 由于寫的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導(dǎo)航。 由于更新比較頻繁,因此隔一段時間才會更新目錄導(dǎo)航哦~想要獲取最新原創(chuàng)的技術(shù)文章歡迎關(guān)注我的公眾號:Java3y Java3y文章目錄導(dǎo)航 Java基礎(chǔ) 泛型就這么簡單 注解就這么簡單 Druid數(shù)據(jù)庫連接池...
摘要:在使用上述模板,默認(rèn)從下加載。介紹是現(xiàn)代化服務(wù)器端的模板引擎,不同與其它幾種模板的是的語法更加接近,并且具有很高的擴(kuò)展性。特點(diǎn)支持無網(wǎng)絡(luò)環(huán)境下運(yùn)行,由于它支持原型,然后在標(biāo)簽里增加額外的屬性來達(dá)到模板數(shù)據(jù)的展示方式。 SpringBoot 是為了簡化 Spring 應(yīng)用的創(chuàng)建、運(yùn)行、調(diào)試、部署等一系列問題而誕生的產(chǎn)物,自動裝配的特性讓我們可以更好的關(guān)注業(yè)務(wù)本身而不是外部的XML配置,...
什么是EL表達(dá)式? 表達(dá)式語言(Expression Language,EL),EL表達(dá)式是用${}括起來的腳本,用來更方便的讀取對象! EL表達(dá)式主要用來讀取數(shù)據(jù),進(jìn)行內(nèi)容的顯示! 為什么要使用EL表達(dá)式? 為什么要使用EL表達(dá)式,我們先來看一下沒有EL表達(dá)式是怎么樣讀取對象數(shù)據(jù)的吧! 在1.jsp中設(shè)置了Session屬性 向session設(shè)置一個屬性 在2...
閱讀 2600·2023-04-25 20:50
閱讀 3964·2023-04-25 18:45
閱讀 2233·2021-11-17 17:00
閱讀 3338·2021-10-08 10:05
閱讀 3087·2019-08-30 15:55
閱讀 3505·2019-08-30 15:44
閱讀 2366·2019-08-29 13:51
閱讀 1123·2019-08-29 12:47