Servlet中的一些基本方法
阿新 • • 發佈:2018-11-04
獲取servlet配置資訊(需要在web.xml中進行配置)
getServletConfig()
然後getInitParameter()
獲getInitParameterNames()
然後就可以獲取web.xml中的配置資訊了
獲取ServletContext物件
1.getServletConfig().getServletContext();
2.getServletContext();
- ServletContext物件中的方法
- 1.setAttribute
- 2.getAttribute
- 3.removeAttribute
- 域物件的作用:
- 1.存值取值
- 2.進行傳值
- 3.可以獲取全域性配置資訊 web.xml
- 4.可以獲取專案中所有資源的在TomCat上的絕對路徑 getRealPath
- 5.可以進行請求轉發
可以在一個servlet進行setAttribute,然後在另一個servlet中getAttribute獲取屬性
3.獲取伺服器上的真實路徑
String realPath1 = application.getRealPath("/WEB-INF/classes/a.properties");
4.利用Context域進行轉發
ServletContext application = getServletContext();
// 獲取請求轉發器 引數:要轉發到的路徑
// 注意:請求轉發只能轉發站內的路徑 並且傳入的地址相對於工程的
/*
* 請求轉發注意
* 1.請求轉發使用者只發送了一次請求
* 2.網址沒有發生變化(使用者並不知道內部你怎麼操作)
* 3.只能轉發站內
*/
RequestDispatcher dispatcher = application.getRequestDispatcher("/demo07" );
// 轉發請求
dispatcher.forward(request, response);
響應(response)
/*
* 響應(response)響應回瀏覽器(使用者)
* 響應行
* 響應狀態碼 200(成功) 302(重定向) http協議1.1
* 響應頭
* 告訴瀏覽器 我要做什麼
* 響應體
* 響應的內容
*/
public class Demo08 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TomCat預設編碼格式 Tomcat9 之前 是ISO-8859-1
// response.setCharacterEncoding("UTF-8");
// 設定響應頭告訴瀏覽器以什麼編碼格式來解析響應
// response.setHeader("Content-Type", "text/html;charset=UTF-8");
// 相當於上面兩句二合一
response.setContentType("text/html;charset=UTF-8");
// 利用response獲取 字元流 和 位元組流
PrintWriter writer = response.getWriter();
writer.write("你好");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
下載圖片
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 下載圖片
// 獲取圖片在伺服器上的真實路徑
ServletContext application = getServletContext();
String realPath = application.getRealPath("/WEB-INF/classes/哈哈.png");
// 通過file類獲取檔名
File file = new File(realPath);
String fileName = file.getName();
// 需要設定圖片名的編碼格式iso-8859-1
fileName = new String(fileName.getBytes(), "iso-8859-1");
// 通過設定響應頭來告訴瀏覽器 我給你的資源 下載用
response.setHeader("content-disposition", "attachment;filename=" + fileName);
// 設定下載內容的格式(去TomCat下的config中的web.xml查詢資源格式)
response.setHeader("Content-Type", "image/png");
// 讀取圖片 位元組流
FileInputStream fis = new FileInputStream(realPath);
ServletOutputStream outputStream = response.getOutputStream();
// 使用響應中的位元組流 將圖片寫回瀏覽器
byte[] b = new byte[1024];
int len;
while ((len = fis.read(b)) != -1) {
outputStream.write(b, 0, len);
}
fis.close();
}
response重定向
private void chongdingxiang(HttpServletResponse response) {
System.out.println("你好1");
// 通過響應response進行請求重定向
// 可以進行站內重定向 相當於8080後的斜槓
// 也可以進行站外重定向
response.setHeader("location", "/xx/demo11");
// 需要新增重定向的狀態碼
response.setStatus(302);
/*
* 注意
* 1.重定向 傳送了兩次請求(網址變了)
* 2.重定向 會執行完第一次請求的方法 在進行第二次請求
*/
System.out.println("成了");
}
request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 獲取請求方式 get/post GET
String method = request.getMethod();
System.out.println(method);
// 獲取使用者請求的url(統一資源定位符) http://localhost:8080/xx/demo12
StringBuffer requestURL = request.getRequestURL();
System.out.println(requestURL);
// 獲取使用者請求的uri /xx/demo12
String requestURI = request.getRequestURI();
System.out.println(requestURI);
// 獲取相對路徑 /xx
String contextPath = request.getContextPath();
System.out.println(contextPath);
//http://localhost:8080/xx/demo12?username=wl&password=123
// 獲取使用者請求的引數 引數相當於key
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println(username);
System.out.println(password);
}