java學習路程(javaEE)之獲取表單資料、獲取引數、request域、會話技術(Cookie)
一.獲取表單資料
//設定瀏覽器資料格式
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
//解決請求過來的資料亂碼
request.setCharacterEncoding("utf-8");
// 獲取請求過來的引數
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println(username +" "+ password);
}
// Servlets設定
<servlet>
<servlet-name>demo01</servlet-name>
<servlet-class>com.lanou3g.Demo01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo01</servlet-name>
<url-pattern>/demo01</url-pattern>
</servlet-mapping>
二.獲取引數
1.獲取表格中的資料
String username = request.getParameter("username");
String password = request.getParameter("password");
String sex = request.getParameter("sex");
String[] values = request.getParameterValues("hobby");
for (String string : values) {
System.out.println(string);
}
String city = request.getParameter("city");
2.獲取引數的map集合
Map<String, String[]> map =request.getParameterMap();
for (String key : map.keySet()) {
String[] values = map.get(key);
for (String string : values) {
System.out.println(key +"="+ string);
}
}
3.獲取引數的所有name
Enumeration<String> names =request.getParameterNames();
while(names.hasMoreElements){
System.out.println(names.nextElement());
}
4.將獲得引數封裝成物件
方法一:
建立users類將引數都宣告為成員變數,放入物件中
注意:
1).使用的實體類物件 必須符合Javabean規範
2).實體類的成員變數要跟獲取的引數一樣
3).成員變數的名和name標籤的名要相同
html
<body>
//action 要提交的地址 從8080開始填 需要帶上工程名
<form action="/sh-web-03/demo01" method="post">
// name標籤相當於使用request獲取引數方法的key
賬號:<input type="text" name="username"></br>
密碼:<input type="text" name="password"></br>
<input type="submit" value="提交">
</form>
</body>
String username = request.getParameter("username");
String password = request.getParameter("password");
String sex = request.getParameter("sex");
String[] hobby = request.getParameterValues("hobby");
String city = request.getParameter("city");
// 放入物件中
Users users = new Users(username, password, sex, hobby, city);
方法二:利用BeanUtils直接將請求的引數分裝成物件
Users users = new Users();
try {
BeanUtils.populate(users, request.getParameterMap());
System.out.println(users);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
三.request 域物件
作用範圍: 只在一次請求中有效
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("utf-8");
PrintWriter writer = response.getWriter();
request.setAttribute("lisi", "man");
//直接使用request物件進行請求轉發
//獲取請求轉發器
RequestDispatcher dispatcher = request.getRequestDispatcher("/demo04");
dispatcher.forward(request, response);
writer.write("123");
System.out.println("我是demo03響應回瀏覽器");
請求重定向(不用狀態碼)兩次請求超出Request範圍
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("utf-8");
PrintWriter writer = response.getWriter();
request.setAttribute("lisi", "man");
response.sendRedirect("/sh-web-03/demo04");
//獲取轉發器
RequestDispatcher dispatcher = request.getRequestDispatcher("/demo04");
// 包含方法
dispatcher.include(request, response);
writer.write("123");
System.out.println("我是demo03響應回瀏覽器");
public class Demo04 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("utf-8");
// 響應回瀏覽器
response.getWriter().write("456");
// 取出 request域中的值
Object attribute = request.getAttribute("lisi");
System.out.println(attribute);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
四.會話技術
1.含義:
指的是客戶端(使用者/瀏覽器)和服務端(Servlet)進行的互動
注意:當關閉瀏覽器時這次回話才會結束
客戶端技術(瀏覽器實現)Cookie
2.Cookie的使用流程:
1).當使用者第一次訪問伺服器時,伺服器會建立一個Cookie並且新增到響應中,響應回瀏覽器
2).當瀏覽器接收到攜帶Cookie的響應後,會將Cookie儲存到瀏覽器的本地檔案
3).當使用者再次訪問伺服器是會攜帶著Cookie一起去訪問,這時服務端拿到 Cookie可以使用
4).預設瀏覽器關閉 會話結束,瀏覽器銷燬儲存Cookie(可設定cookie的存活時間)
3.Cookie的使用:
1).每個網站最多可以儲存20個Cookie到瀏覽器中
2).每個Cookie最多4kb(只能儲存小資料)
3).每個瀏覽器最多可以儲存300個Cookie
4).Cookie中不能儲存中文
4.setMaxAge()
正值: Cookie到時間銷燬;
負值: 瀏覽器不會儲存Cookie,回話結束直接銷燬 ;
0值:立即刪除Cookie;
顯示上一次(最後)的登入時間
public class Demo05 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("utf-8");
// 從請求中獲取cookie
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
// 找出 儲存的 lastTime的cookie
if (cookie.getName().equals("lastTime")) {
// 獲取cookie儲存的值
String value = cookie.getValue(); // 秒數
// 字串轉long型
long time = Long.parseLong(value);
// 轉換時間
Date date = new Date(time);
// 將日期物件格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");
// 格式化
String stringTime = sdf.format(date);
// 將時間顯示到瀏覽器
response.getWriter().println(stringTime);
}
}
}
Cookie cookie = new Cookie("lastTime", System.currentTimeMillis() +"");
// 設定存活時間
cookie.setMaxAge(5 * 60);
// 設定儲存路徑
// / 表示工程下所有的Servlet類都能拿到這個Cookie
// /sh-web-03/servlet 表示只有訪問路徑是servlet下的類才能獲取到Cookie
cookie.setPath("/sh-web-03/servlet");
// cookie新增到響應
response.addCookie(cookie);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
Servlet設定
<servlet>
<servlet-name>demo05</servlet-name>
<servlet-class>com.lanou3g.Demo05</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo05</servlet-name>
<url-pattern>/servlet/demo05</url-pattern>
</servlet-mapping>
相關文章
- request保持會話,尋找set-cookie來獲取資料會話Cookie
- request 獲取不到 CookieCookie
- Laravel request 獲取路由引數Laravel路由
- 表單請求獲取路由引數路由
- java後臺獲取cookieJavaCookie
- gofiber: 獲取引數Go
- Spring MVC 獲取三個域(request請求域,session 會話域,application 應用域)物件的方式SpringMVCSession會話APP物件
- HttpServletRequest 獲取 CookieHTTPServletCookie
- gatling 獲取 cookieCookie
- 會話技術之Cookie會話Cookie
- Java 獲取系統各項引數Java
- JavaScript—獲取引數(23)JavaScript
- Python培訓技術分享:Python Cookie HTTP獲取cookie並處理PythonCookieHTTP
- js獲取url傳遞引數,js獲取url?號後面的引數JS
- 獲取cookie辦法Cookie
- keycloak~RequiredActionProvider中獲取表單認證前URL的引數UIIDE
- URL引數獲取/轉碼
- 獲取url上的引數
- HttpServletRequest獲取header引數 signHTTPServletHeader
- JAVA之反射學習1-如何獲取Class物件Java反射物件
- 如何獲取Cookie並使用Cookie侵入Cookie
- requests模組獲取cookieCookie
- 獲取cookie裡面的值Cookie
- Java 獲取Word字數Java
- Python如何獲取request response bodyPython
- Java 獲取Excel中的表單控制元件JavaExcel控制元件
- js實現獲取URL引數JS
- C#獲取URL引數值C#
- go語言獲取外部引數Go
- vue獲取位址列引數方法Vue
- http獲取get引數過濾HTTP
- JDBC獲取表的列數JDBC
- Python Cookie HTTP獲取cookie並處理PythonCookieHTTP
- java web 通過request獲取客戶端IPJavaWeb客戶端
- web前端學習教程:Cookie會話跟蹤技術Web前端Cookie會話
- JAVA之反射學習3-反射獲取成員變數並賦值Java反射變數賦值
- Jmeter系列(31)- 獲取並使用 JDBC Request 返回的資料JMeterJDBC
- datatables 獲取 pageLength 和 pageStart,重新獲取table資料