JSP頁面元素,內置對象以及tomcat配置技巧

對jsp基礎的一些掌握和概括

先看當我們創建jsp文件時,eclipse自動生成的jsp代碼。

之後,我們再添加一些代碼,如圖所示。

如上圖所示,JSP的頁面元素包括: HTML,  java代碼(腳本Scriptlet),指令,註釋。


a.腳本Scriptlet,網頁中的java代碼可以分爲如下三類。


    i.    主要用來定義書寫局部變量,java語句等
  
     <%
                局部變量、java語句
        %>

    ii.主要用來定義全局變量和方法
     
   <%!
                全局變量、定義方法
        %>

    iii.可以用來輸出變量值,而且不需要加分號,前兩種和普通的java語句一樣,需要加分號

        <%=輸出表達式 %>

demo 代碼如下

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<%!
		public String name="";
		public void show()
		{
			name="hello jsp method";
		}
	%>
		<br/>
	<%	
		String name1="hello param";
		out.print("name1:"+name1+"<br/>") ;
		show();
		out.print("name:"+name) ;
	%>	
		<br/>	
	<%="name3:"+name1 %>
</body>
</html>

訪問該項目文件如圖


       注意:如果此時服務已經啓動,修改web.xml、配置文件、java  等(後端服務器相關的代碼或者配置)需要重啓tomcat服務,但是如果修改 Jsp\html\css\js ,不需要重啓,注意,out.println()不能回車; 要想回車:“<br/>”,即out.print() 和<%= %> 可以直接解析html代碼


b.指令
    page指令

   <%@ page  ....%>
page指定的屬性:
     language:jsp頁面使用的腳本語言,在這裏一般是java
    import:導入類
    pageEncoding:jsp文件自身編碼  
    contentType:瀏覽器解析jsp的編碼

例如:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"  import="java.util.Date" %>

利用import屬性導入一個包爲java.util.Date

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.Date"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>	
	時間:
	<%	
		out.print(new Date());
	%>		
		<br/>
	<%="時間:"+new Date()%>
</body>
</html>

訪問該項目文件如圖


c.註釋,註釋分爲以下三種。


    html註釋:<!-- -->  ,    可以被客戶 通過瀏覽器查看源碼 所觀察到
    java註釋://     /*...*/      不可以被客戶 通過瀏覽器查看源碼 所觀察到
    jsp註釋:<%-- --%>       不可以被客戶 通過瀏覽器查看源碼 所觀察到

demo代碼如下

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.Date"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>	
	<!-- html 註釋 -->
	<%	
		//java註釋
		
		/*
		java註釋
		*/
	%>	
	<%--jsp註釋 --%>
		
	
</body>
</html>

訪問該項目文件,並在瀏覽器查看源代碼如圖


JSP九大內置對象(自帶的,不需要new 也能使用的對象)。


     out:輸出對象,向客戶端輸出內容。
     request:請求對象;存儲“客戶端向服務端發送的請求信息”。


        request對象的常見方法:
           String getParameter(String name) :根據請求的字段名key (input標籤的name屬性值) ,返回字段值value (input標籤的value屬性值)
           String[] getParameterValues(String name): 根據請求的字段名key ,返回多個字段值value  (checkbox)
           void setCharacterEncoding("編碼格式utf-8") :設置post方式的請求編碼  (tomcat7以前默認iso-8859-1,tomcat8以後改爲了utf-8)
           getRequestDispatcher("b.jsp").forward(request,response) ;  :請求轉發 的方式跳轉頁面   A - > B
          ServletContext getServerContext():獲取項目的ServletContext對象

示例:
註冊和顯示
register.jsp  

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
		<form action="show.jsp" method="get">
			用戶名:<input type="text"  name="uname" /><br/>
			密碼:<input type="password"  name="upwd"/><br/>
			年齡:<input type="text"  name="uage"/><br/>
			愛好<br/>
			<input type="checkbox"  name="uhobbies" value="足球"/>足球、
			<input type="checkbox"  name="uhobbies"  value="籃球"/>籃球、
			<input type="checkbox"  name="uhobbies"  value="乒乓球"/>乒乓球<br/>
			<input type="submit" value="註冊">
		</form>
</body>
</html>

show.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
		<%
			//設置編碼
			request.setCharacterEncoding("utf-8") ;
			//獲取值
			String name = request.getParameter("uname") ;
			int age = Integer.parseInt(request.getParameter("uage") ) ;
			String pwd = request.getParameter("upwd") ;	
			//通過該方法返回一個字符串數組
			String[] hobbies = request.getParameterValues("uhobbies") ;
		%>
		
		註冊成功,信息如下:<br/>
		姓名:<%=name %><br/>
		年齡:<%=age %><br/>
		密碼:<%=pwd %><br/>
		愛好:<br/>
		
		<%
			//判斷拿到的值是否爲null,以免報NullPointerException
			if(hobbies !=null)
			{
				for(String hobby :hobbies)
				{
					out.print(hobby +"&nbsp;");
				}
			}
		%>
	
		
		
</body>
</html>

訪問該項目文件,

此時觀察到地址欄發生了變化,是因爲我們表單的提交方式設置爲get,該方式的地址欄信息一般如下!
        連接/文件?參數名1=參數值1 & 參數名2=參數值2 & 參數名1=參數值1 。
get提交方式:  method="get" 和 地址欄 、超鏈接(<a href="xx">)請求方式 默認都屬於get提交方式

我們將form表單的提交方式改爲post,可以觀察到:

get與post請求方式的區別:
a.   get方式 在地址欄顯示 請求信息  (但是地址欄能夠容納的 信息有限,4-5KB;如果請求數據存在大文件,圖片等  會出現地址欄無法容納全部的數據而出錯) ;post不會顯示。
b.   文件上傳操作,必須是post。

推薦使用post

統一請求的編碼 request。


      get方式請求 如果出現亂碼,解決:
           a.統一每一個變量的 編碼 (不推薦)
               new String(  舊編碼,新編碼);
               name = new String(name.getBytes("iso-8859-1"),"utf-8");

           b. 修改server.xml ,一次性的 更改tomcat默認get提交方式的編碼 (utf-8)
           建議 使用tomcat時, 首先在server.xml中 統一get方式的編碼.. URIEncoding="UTF-8"

 <Connector connectionTimeout="20000" port="8888" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8/>


tomcat7 :默認編碼格式爲: (iso-8859-1)

tomcat8 :默認編碼格式爲:(utf-8)


post方式請求 如果出現亂碼,解決:
           request.setCharacterEncoding("utf-8") ;

 

還剩七個內置對象:分別是:

session   會話對象
appliation 全局對象
response  響應對象
pageContext  JSP頁面容器
config  配置對象(服務器配置信息)
page   當前JSP頁面對象(相當於java中的this)
exception 異常對象

 

後面一一複習使用!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章