request案例
?request主要是面向客戶端的請求,這個(gè)比response簡單,
?
?
案例一、request案例一 獲得客戶機(jī)信息
?
?
?request第一部分 獲取客戶機(jī)信息
?url和uri的區(qū)別?
?url是uri的一個(gè)子集。
?uri可以制定任何路徑。
?url必須是完整的路徑。
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ResponseServlet4 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //測試一些客戶機(jī)數(shù)據(jù) System.out.println("uri:"+request.getRequestURI()); System.out.println("url:"+request.getRequestURL());//獲得完整的url System.out.println("querystr:"+request.getRequestURL());//獲得請求行中的參數(shù)部分 response.setContentType("text/html;charset=utf-8");//編碼方式 PrintWriter out=response.getWriter(); out.println("您的ip是:"+request.getRemoteAddr());//得到客戶機(jī)的ip out.println("您的客戶機(jī)完整名是:"+request.getRemoteHost()); out.println("您的請求方式是:"+request.getMethod()); // 獲得當(dāng)前用戶訪問的資源 String uri=request.getRequestURI();// /myday06/request4 String contextpath=request.getContextPath();// /myday06 out.println("你正在訪問的是:"+uri.substring(contextpath.length()));//這句的意思是去掉前面的信息,只保留后面的資源名稱 } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }?
案例二:獲取頭信息,防止盜鏈
?
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ResponseServlet5 extends HttpServlet { //防止盜鏈 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); //分析原理,頭信息referer,得知該次請求來源,判斷是否為盜鏈 String referer=request.getHeader("referer"); if(referer==null||!referer.startsWith("http://localhost")) { response.getWriter().println("<h1>盜鏈資源,可恥!</h1>"); //如果我直接訪問我這個(gè)servlet,那么一定是盜鏈,因?yàn)閞eferer為null }else{ response.getWriter().println("<h1>歡迎訪問</h1>"); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }?
案例三、處理中文亂碼
案例三、防止中文亂碼
?可以提交請求的兩種方式
?1.使用<form>
?執(zhí)行form的submit,提交form表單。
?常用表單元素
?<input type=[text | password | radio | checkbox | submit ]>
?<select>…<option>
?<textarea>
?2.使用URL鏈接
?<a > 點(diǎn)擊鏈接 </a>
?這樣通過?可以提交參數(shù),&用來分隔多個(gè)參數(shù),
?效果和<form>的GET方式相同
?
?處理中文亂碼
?數(shù)據(jù)非空校驗(yàn)
?
?處理中文亂碼
?post亂碼問題:
?setCharacterEncoding ?//放在getParameter前才有效
?get亂碼問題:
?new String(str.getBytes(“ISO-8859-1”),”utf-8”)
?設(shè)置tomcat Connector URIEncoding=“utf-8”
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
