1.什麼是JSP內置對象? jsp內置對象就是Web容器創建的一組對象,我們都知道Tomcat可以看成是一種Web容器,所以我們可以知道所謂的內置對象Tomcat創建的,使用內置對象時可以不適用new關鍵字, 直接使用即可. 2.什麼是內置對象? 解析:就是Web容器創建的一組對象,當Tocmat啟 ...
1.什麼是JSP內置對象?
jsp內置對象就是Web容器創建的一組對象,我們都知道Tomcat可以看成是一種Web容器,所以我們可以知道所謂的內置對象Tomcat創建的,使用內置對象時可以不適用new關鍵字,
直接使用即可.
2.什麼是內置對象?
解析:就是Web容器創建的一組對象,當Tocmat啟動時,這組對象在Tomcat伺服器啟動的時候載入到記憶體,可以用戶直接使用.
3.JSP內置對象都有哪些?
out(常用) | out 對象用於在Web瀏覽器內輸出信息,並且管理應用伺服器上的輸出緩衝區。在使用 out 對象輸出數據時,可以對數據緩衝區進行操作,及時清除緩衝區中的殘餘數據,為其他的輸出讓出緩衝空間。待數據輸出完畢後,要及時關閉輸出流。 |
request(常用) | request 對象是 javax.servlet.httpServletRequest類型的對象。 該對象代表了客戶端的請求信息,主要用於接受通過HTTP協議傳送到伺服器的數據。(包括頭信息、系統信息、請求方式以及請求參數等)。request對象的作用域為一次請求。 |
response(常用) | response 代表的是對客戶端的響應,主要是將JSP容器處理過的對象傳回到客戶端。response對象也具有作用域,它只在JSP頁面內有效。 |
session(常用) | session 對象是由伺服器自動創建的與用戶請求相關的對象。伺服器為每個用戶都生成一個session對象,用於保存該用戶的信息,跟蹤用戶的操作狀態。session對象內部使用Map類來保存數據,因此保存數據的格式為 “Key/value”。 session對象的value可以使複雜的對象類型,而不僅僅局限於字元串類型。 |
application(常用) | application 對象可將信息保存在伺服器中,直到伺服器關閉,否則application對象中保存的信息會在整個應用中都有效。與session對象相比,application對象生命周期更長,類似於系統的“全局變數”。 |
pageContext |
pageContext 對象的作用是取得任何範圍的參數,通過它可以獲取 JSP頁面的out、request、reponse、session、application 等對象。pageContext對象的創建和初始化都是由容器來完成的,在JSP頁面中可以直接使用 pageContext對象。 |
config |
config 對象的主要作用是取得伺服器的配置信息。通過 pageConext對象的 getServletConfig() 方法可以獲取一個config對象。當一個Servlet 初始化時,容器把某些信息通過 config對象傳遞給這個 Servlet。 開發者可以在web.xml 文件中為應用程式環境中的Servlet程式和JSP頁面提供初始化參數。 |
page |
page 對象代表JSP本身,只有在JSP頁面內才是合法的。 page隱含對象本質上包含當前 Servlet介面引用的變數,類似於Java編程中的 this 指針。 |
exception |
exception 對象的作用是顯示異常信息,只有在包含 isErrorPage="true" 的頁面中才可以被使用,在一般的JSP頁面中使用該對象將無法編譯JSP文件。excepation對象和Java的所有對象一樣,都具有系統提供的繼承結構。exception 對象幾乎定義了所有異常情況。在Java程式中,可以使用try/catch關鍵字來處理異常情況; 如果在JSP頁面中出現沒有捕獲到的異常,就會生成 exception 對象,並把 exception 對象傳送到在page指令中設定的錯誤頁面中,然後在錯誤頁面中處理相應的 exception 對象。 |
request如何在另一個頁面拿到值,並且解決post提交的中文亂碼問題!
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP '1.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="index.jsp" method="post"> <input typr="text" name="txtName" /><br/> <input type="password" name="txtPwd" /><br/><input type="submit" name="Login" /> </form> </body> </html>
另一個index.jsp頁面中寫入如下代碼
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body>
<%
<!-- 用post方式提交解決亂碼的方法 -->
request.setCharacterEncoding("UTF-8");
%> <%
<!-- request.getParameter(form表單中文本框的name名字); 用來拿到提交過來的文本框的屬性 -->
String name=request.getParameter("txtName"); String pwd=request.getParameter("txtPwd"); %> <%=name %><br/> <%=pwd %> </body> </html>
運行結果如下:用戶名和密碼輸入的都是123 (當然,沒有做邏輯判定了 嘻嘻)
當點擊提交之後,跳轉到index.jsp頁面:
結果就是:
request轉發的方法
<!-- 2.jsp頁面 -->
<% if(request.getParameter("txtName").equals("123")){ String str=request.getParameter("txtName"); request.setAttribute("name", str); //轉發 request.getRequestDispatcher("index.jsp").forward(request, response); } %>
我們可以看到,通過中轉站2.jsp進行判定通過之後,轉發到歡迎頁面,但是URL中顯示的還是2.jsp
response重定向方法
?1 2 3 4 5 6 7 8 |
<%
if (request.getParameter( "txtName" ). equals ( "123" )){
String str=request.getParameter( "txtName" );
request.setAttribute( "name" , str);
//重定向
response.sendRedirect( "index.jsp" );
}
%>
|
通過重定向跳轉之後,我們可以看到URL地址中變成index.jsp頁面.
request轉發和response重定向的區別
(1).Request Dispatcher.forward()是容器中控制權的轉向,在客戶端瀏覽器地址欄中不會顯示出轉向後的地址;
(2).response.sendRedirect()則是完全的跳轉,瀏覽器將會得到跳轉的地址,並重新發送請求鏈接。這樣,從瀏覽器的地址欄中可以看到跳轉後的鏈接地址。
前者更加高效,在前者可以滿足需要時,儘量使用RequestDispatcher.forward()方法.
註:在有些情況下,比如,需要跳轉到一個其它伺服器上的資源,則必須使用HttpServletResponse.sendRequest()方法。
out方法的使用:
<% out.print("我是out內置對象"); %>
其運行結果是:
session的使用方法:
<!-- 一個網頁中把變數username以username為名字保存在session上--> <%session.setAttribute("username",username);%> <!-- 在另一個頁面中通過getAttribute方法取得username的值--> <%String username = (String)session.getAttribute("username");%> <!-- "username"是傳遞變數的名字 username 是變數--> <!-- session是一次會話只要瀏覽器不關閉就不會關閉會話 一般預設保存30分鐘可以根據自己的需要更改-->
application的使用方法
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <html> <head> <title>My JSP 'ServletContextAttribute.jsp' starting page</title> </head> <body> <% application.setAttribute("name","Hello") ; application.removeAttribute("name") ; %> </body> </html> ServletContextListenerDemo.java: package org.lxh.listener.app; import javax.servlet.ServletContextAttributeEvent; import javax.servlet.ServletContextAttributeListener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class ServletContextListenerDemo implements ServletContextAttributeListener, ServletContextListener { public void attributeAdded(ServletContextAttributeEvent arg0) { System.out.println("** 增加屬性:" + arg0.getName() + " --> " + arg0.getValue()) ; } public void attributeRemoved(ServletContextAttributeEvent arg0) { System.out.println("** 刪除屬性:" + arg0.getName() + " --> " + arg0.getValue()) ; } public void attributeReplaced(ServletContextAttributeEvent arg0) { System.out.println("** 替換屬性:" + arg0.getName() + " --> " + arg0.getValue()) ; } public void contextDestroyed(ServletContextEvent arg0) { System.out.println("** 容器銷毀:" + arg0.getServletContext().getRealPath("/")); } public void contextInitialized(ServletContextEvent arg0) { System.out.println("** 容器初始化:" + arg0.getServletContext().getRealPath("/")); } }
如若轉載,請標明 @小小菜鳥,飛得高
本人QQ是 : 1878321819
對jsp/servlet有興趣的可以進行交流哦!