1. 程式人生 > >Servlet中的ServletContext作用域,獲取請求引數的幾種方式

Servlet中的ServletContext作用域,獲取請求引數的幾種方式

(1)ServletContext作用域

可以寫一個SetAttributeServlet檔案與GetAttributeServlet

程式碼如下:

@WebServlet("/MyFirstServlet")
public class SetAttributeServlet extends HttpServlet {


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  
 //在ServletContext中儲存一個資訊
ServletContext servletContext=getServletContext();
//新增String型別到servletContext的作用域中
//第一種方式
servletContext.setAttribute("name", "zhangsan");
servletContext.setAttribute("sex", "nan");
//第二種方式,新增物件
servletContext.setAttribute("user", new User("wangwu","231"));
//移除,寫上這行程式碼後就會移除掉這個物件
//servletContext.removeAttribute("User");
//第三種方式,新增集合
        ArrayList<User> arrayList=new ArrayList<User>();
        arrayList.add(new User("zhaoxin","1234"));
        arrayList.add(new User("liubei","123435"));
       
        servletContext.setAttribute("userList", arrayList);



}
         /**
          * 處理post請求
          */

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//呼叫doGet
doGet(request, response);

}
}

GetAttributeServlet中的程式碼:



public class GetAttributeServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

super.doPost(req, resp);
}
                 

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 
//獲取servletContext的物件
ServletContext servletContext=getServletContext();
//獲取普通引數
String name=(String)servletContext.getAttribute("name");
String sex=(String)servletContext.getAttribute("sex");
System.out.println(name+"---"+sex);
//獲取物件
User user=(User)servletContext.getAttribute("user");
System.out.println(user.toString());//轉換成string型別
//獲取集合
ArrayList<User> userList=(ArrayList<User>)servletContext.getAttribute("userList");
for(User user2: userList) {
 
System.out.println(user2.toString());
}


}
}

(2)獲取請求引數的幾種方式


在RequestServlet.java中程式碼:

/**
 * Servlet implementation class RequestServlet
 */
@WebServlet("/RequestServlet")
public class RequestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
       
   
    public RequestServlet() {
        super();
        // TODO Auto-generated constructor stub
    }


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 //獲取請求頭資訊
Enumeration<String> headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
 String key=headerNames.nextElement();
 //請求頭的資訊
 String value=request.getHeader(key);
 System.out.println(key+"-----"+value);

}

/**
* 獲取請求方法
*/
String method=request.getMethod();
System.out.println(method);
/**
* 獲取具體單個請求引數
*/
String username=request.getParameter("username");
String password=request.getParameter("password");
System.out.println(username+"----"+password);

}


/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);
}


}

在login.html中的程式碼樣式如下:action中表明在提交表單時會跳轉到RequestServlet頁面,在這裡的提交方法是get方法


執行結果:


點選登入後,會在後臺console中顯示出使用者名稱與密碼。

如下的HTML在點選註冊時也會電泳RequestServlet檔案,



我們也可以在RequestServlet中寫程式碼來獲取資訊



/**
 * Servlet implementation class RequestServlet
 */
@WebServlet("/RequestServlet")
public class RequestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
       
   
    public RequestServlet() {
        super();
        // TODO Auto-generated constructor stub
    }


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 //獲取請求頭資訊
Enumeration<String> headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
 String key=headerNames.nextElement();
 //請求頭的資訊
 String value=request.getHeader(key);
 System.out.println(key+"-----"+value);

}

/**
* 獲取請求方法
*/
String method=request.getMethod();
System.out.println(method);
/**
* 獲取請求引數
*/
String username=request.getParameter("username");
String password=request.getParameter("password");
System.out.println(username+"----"+password);

/**
* 在form.html中的愛好有多個,所以用陣列
*/

String[] hobbys=request.getParameterValues("hobbys");
for(String h:hobbys) {
System.out.println(h);

}
//獲取引數的map集合
Map<String,String[]> parameterMap=request.getParameterMap();
//獲取到的是鍵值對的關係,因為一個鍵可能對應多個值
Set<Entry<String,String[]>> entrySet=parameterMap.entrySet();
for(Entry<String,String[]> entry:entrySet) {
String key=entry.getKey();
String[] value=entry.getValue();
for(String v: value) {
 System.out.println(key+"---"+value);
 
}

}

}


/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);
}


}




相關推薦

ServletServletContext作用獲取請求引數方式

(1)ServletContext作用域可以寫一個SetAttributeServlet檔案與GetAttributeServlet程式碼如下:@WebServlet("/MyFirstServlet")public class SetAttributeServlet ext

普通函式和箭頭函式在事件作用使用不使用閉包的區別

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>22-01 高階技巧</title> <

express的路由規則及獲取請求引數方法

express中常見的路由規則 主要使用的路由規則是get和post兩種,即 var express = require('express'); var app = express(); app.get(); // get和post兩種請求方式 app.post();

Spring在代碼獲取bean的方式(轉)

mxml get text spa 回調 獲取對象 ati -s null 獲取spring中bean的方式總結: 方法一:在初始化時保存ApplicationContext對象 1 ApplicationContext ac = new FileSystemXml

Python檔案操作的aa+,ww+rb+,rw+,ra+方式的區別

access_mode:開啟方式,r讀,w寫,a追加,r+ w+ a+ 都是以讀寫方式開啟,rb二進位制讀,wb二進位制寫,rb+ wb+ ab+二進位制讀寫  buffering:預設值  二、對檔案進行操作  將檔案中的內容讀入到一個字串變數/列表中 函式:read(),

ajax在老的瀏覽器有相容問題可以通過另一方式代替

var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObjet('Microsoft.XMLHTTP')

javascript原生跨請求方式

實現原理:利用src屬性實現跨域訪問   第一種方式、、     src是請求伺服器地址路徑     <script type="text/javascript" src="http://10.35.166.110/

java之在普通程式碼獲取bean的方式

普通程式碼中獲取bean的幾種方式 最近在專案中,因程式碼模式要求,需要在普通類中去主動呼叫bean例項,經過參考分析,做如下的整理。 在初始化時儲存ApplicationContext物件 通過Spring提供的utils類獲取ApplicationC

Spring在程式碼獲取bean的方式

方法一:在初始化時儲存ApplicationContext物件 方法二:通過Spring提供的utils類獲取ApplicationContext物件 方法三:繼承自抽象類ApplicationObjectSupport 方法四:繼承自抽象類WebApplicationO

java 獲取時間的方式以及SimpleDateFormat裡引數的解釋 等

1、通過Date類來獲取當前時間 Date day=new Date(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(

前端向後臺發送請求方式

發送請求 ajax nbsp a標簽 lin 請求 ram class img 1、 link標簽的href屬性 2、 script標簽的src屬性 3、 img標簽的src屬性 4、 ajax發送請求 5、 表單提交發送請求 6、 a標簽的href發送請求 7、 ifra

js頁面加載完成後執行的方式及執行順序

class 事件 兩種 在哪裏 log 等待 沒有 cti 完成 1:使用jQuery的$(function){}; 2:使用jquery的$(document).ready(function(){});前兩者本質上沒有區別,第1種是第2種的簡寫方式。兩個是document

非同步傳送請求方式

asyncio: # import asyncio # def fun1(): # print('start') # yield from asyncio.sleep(1) # print('end') # # tasks=[ # fun1(),fun1() #

Vue指令v-for之遍歷陣列json物件的方式

定義資料:   <script>     new Vue({         el:"#test",         data:{      

獲取 RenderTexture 的方式

RenderTexture Constructor public class ExampleClass : MonoBehaviour { public RenderTexture rt; void Start() { rt =

原生js及jquery獲取標籤的方式——為什麼id不能重複

1. 原生js獲取標籤 DOM(document object model)文字物件模型 我們在用原生js獲取標籤都離不開DOM 用原生js獲取標籤的幾種常用方法 1. 獲取標籤id document.getElementById(‘id’) 引數是id的字元,

linux指令碼父shell與子shell 執行的方式

本文主要介紹以下幾個命令的區別: shell subshell source $ (commond) `commond` Linux執行Scripts有兩種方式,主要區別在於是否建立subshell 1. source filename or . filename 不建立subshell,在當前shel

springmvc 前端 發ajax請求方式

一.傳json單值或物件 1.前端 1 var data = {'id':id,'name':name}; 2 $.ajax({ 3 type:"POST", 4 url:"user/saveUser",

spring mvc接收表單提交的資料的方式

spring mvc封裝資料的物件有session、request、ModelAndView、ModelMap、Model、Map Map map,Model model,ModelMap mmap,ModelAndView mav,HttpServletRequest r

獲取SHA1的方式

1、通過Eclipse編譯器獲取SHA1 使用 adt 22 以上版本,可以在 eclipse 中直接檢視。 Windows:依次在 eclipse 中開啟 Window -> Preferances -> Android -> Build。 Mac:依次在 eclip