javascript
初识 JSP---(Servlet映射 / ServletRequest / get与post区别 / 解决乱码)
Servlet映射的細節
同一個Servlet映射多個URL上,即多個<Servlet-mapping>元素的<servlet-name>子元素的設置值可以是同一個Servlet的注冊名
第一種方法:
第二種方法:
第三種方法:通配符(*.do 或者 *.html)
第四種方法:通配符(/*)
HttpServletRequest
創建Servlet實現了Servlet接口
//servlet服務的方法
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("servlet服務開啟了");
}
?
ServletRequest:封裝了請求的信息,可以從中獲取請求的信息
ServletRequest:
1.可以獲取請求的參數
String(返回類型) getparameter(String name);
使用這個方法,只有獲取單個字符串,若是請求參數有多個值(checkBox),該方法只能獲取到第一個提交的值【最常用】
例:獲取a標簽中的參數
例:獲取單選框中的值
?
String[ ](返回類型) getParameterValues(String name);根據請求的參數的名字,返回請求參數對應的字符串數組【最常用】
例:獲取多選框中的值
HttpServletRequest:繼承了ServletRequest并基于Http協議
提供了對用戶的請求,信息統一封裝的接口,一般用于Servlet容易提供的。里面包含了大量的獲取Http請求的相關方法
2.獲取請求URL
StringBuffer getRequestURL();
3.獲取請求的URI
String getRequestURI();
4.獲取method的方法
String getMethod();
5.獲取servlet請求映射路徑
String getServletPath();
例:
結果
6.設置正文的編碼格式
String getCharsetEncoding(String s);
7.獲取正文的編碼格式
String getCharsetEncoding();
8.設置請求正文的MIME的類型,如果不知道類型,則返回null
String setContentType();
9.獲取請求的正文的MIME的類型
String getContentType();
?
獲取request信息
1.獲取請求正文的長度,若長度未知返回-1
request.getContentLength();
2.獲取URI,URL是URI的自己,結果是:
request.getRequestURI();
3.獲取請求的方式
request.getMethod();
4.獲取所有的請求頭的名字,返回值是枚舉類型
request.getHeaderNames();
5.通過請求頭的名字,獲取值
request.getHeader(name);
6.獲取項目的根路徑:結果為:/FormServlet
request.getContextPath();
?
get與post區別?
區別一:
get重點是在服務器上獲取資源,post重點在于向服務器發送數據
區別二:
get傳輸數據是通過url請求,以字段=value的形式,置于url后,并用“?”連接,多個請求數據間用“&”連接,如http://127.0.0.1:8020/JQueryDemo/HTML1.html?user=%E5%BC%A0%E4%B8%B9&pwd = 123這個過程是可見的。
post傳輸數據是通過http的post機制,將字段與對應的值封存找到請求的實體中,整體發送給服務器,這個過程是對用戶不可見的。
區別三:
get傳輸數據量小,因為受url長度限制,但效率高。post傳輸數據量大,傳輸的數據量不是無限大的,所以上傳文件時,只能用post方法。
區別四:get是不安全的,因為URL是可見的,可能會泄露信息。post較get安全性高
區別五:get方式只能支持ASCII字符,向服務器傳的中文字符,有可能會亂嗎。post支持標準字符集,可以正確傳遞中文字符
解決亂碼格式
1.在JSP頁面里(默認編碼格式為:ISO8859-1)使用中文會亂碼,必須把
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>中的pageEncoding="ISO8859-1"改成pageEncoding="UTF-8";
2.對于不同的請求
(1)doGet:對于解決doPost的方式,doGet不適用
第一種方式:在 Tomcat 中的 conf 文件夾下的 service.xml 中的如下標簽中加入 URIEncoding="UTF-8"
< Connector URIEncoding = "UTF-8" connectionTiomeout="20000" port="8080"? protocal="HTTP/1.1" redirectPort="8443"/>
第二種方法:
request.setCharacterEncoding(“UTF-8”);
通過修改tomcat的server.xml中的代碼:useBodyEncodingForURI=“true”
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
useBodyEncodingForURI=“true”/>
還需要加上
response.setContentType(“text/html;charset-UTF-8”);
(2)doPost:
只要回去請求之前調用:request.setCharacterEncoding(“UTF-8”);
在響應頁面之前調用:response.setContentType(“text/html;charset=UTF-8”);
總結
以上是生活随笔為你收集整理的初识 JSP---(Servlet映射 / ServletRequest / get与post区别 / 解决乱码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 列表、元组
- 下一篇: JS map和set