D:\Software\Tomcat7\work\Catalina\localhost 是緩存目錄,可以刪掉隱藏域:頁面表單中的一個元素,跟文本框一樣,但是用戶看不到1.建立test1--form表單需要它,而不需要用戶看到,用隱藏域<body><%=request.getParameter("haha")%><form action="" method="post"><input type="text" name="haha" /><!-- 隱藏域 --><input type="hidden" name="xixi" value="maoyun" /><input type="submit" /></form></body>
JSP一共有九大內置對象:out
request
response
session
application另外四個用的不多
指令:
<%@page %><%@include file='test1.jsp' %> include 指令(靜態include)test2.jsp<body>222222222222222222222222222222<%int num = 100;%><%@include file="test3.jsp" %></body>test3.jsp body放入33333333333333刪除第一行的其他,進入淘寶的,看導航
動作:
<jsp:forward><jsp:include> include 動作(動態include)建立test4
<body>444444444444444444444444444444<jsp:include page="test5.jsp">//<jsp:param value="maoyun" name="username"/></jsp:include></body>建立test5555555555555555555555555555//<%=request.getParameter("username")%>
面試最容易問相近的東西
首先,這個兩個include從表現的結果形式上沒有任何區別剖析jsp的原理將jsp變成一個servlet,遇到java代碼,就去掉標簽原封不動,如果遇到html代碼,就用out.write給它打出來每一jsp背后都有一個servlet新建test6.jsp
<div>aaaa</div><%System.out.print("xxxx");%></body>到tomcat文件夾里去看看test6啥時候生成,重啟tomcat--訪問網址--打開文件夾有test6_jsp--打開它--_jspInit(){}(初始化)--_jspDestroy--_jspService(Servlet開始也有,分化成兩個)--猜出類像HttpServlet--其里面有session,out 九大內置對象--try---繼續往下走--out.write--寫的html--java代碼servlet是jsp的底層,jsp的聲明???這段內容吃飯的,很重要java代碼里不能定義方法,原因在方法里不能聲明方法通過聲明定義方法--類里可以定義方法test6.jsp<%!public void haha(){}%>test6_jsp在方法里找到代碼 和其他方法平級靜態includ動態includ區別 test3沒有了查看test2_jsp.java合并一個 查看test4_jsp.java 把test5丟過去,其他自己查查靜態的,直接合一起,動態運行的時候合一起動態includ可以傳參數test4里加參數<body>444444444444444444444444444444<jsp:include page="test5.jsp">//<jsp:param value="maoyun" name="username"/></jsp:include></body>靜態不用傳參數, 動態測試下test5接收一下555555555555555555555555555//<%=request.getParameter("username")%>靜態里共享參數,test2 <%int num = 100;%>test3里打印 3333333333333333333333333333
<%=num%> 此時不管報錯直接用 --->查看test2_jsp.java公司開始窮的時候買空間 jsp不需要重啟tomcat 下課練習out.print和out.write區別?新建test7 注釋test3的num<body><% out.print("haha");out.write("haha");%></body>out.print 所打印的內容轉化為字符串打印到頁面上out.write 將原有的內容打印出來<body><% out.print(100);out.write(100);//打印整數的asc碼%></body>
<body><% Object o = nullout.print(o);out.write(100);//打印整數的asc碼%></body>servlet自啟動建立一個包:com.qingmai.web--建立一個類WebStart刪掉maping<servlet><servlet-name>WebStart</servlet-name><servlet-class>com.mao.WebStart</servlet-class><init-param>//4加參數,下面代碼->怎么調用呢->init()里,跟配置有關系String username = this.getServletConfig().getInitParam("username")->打印出來->好處?數據庫的連接信息,客戶不能能改四大金剛,sqlService數據庫名字,會自啟動就可以了,后面框架會解決<param-name>username</param-name><param-value>damao</param-value></init-param><load-on-startup>1</load-on-startup>//1放在最后</servlet> 2初始化的時候加上輸出public void init() throws ServletException {// Put your code hereSystem.out.println("網站啟動了");//String username = this.getServletConfig().getInitParameter("username");//System.out.println(username);
}3然后部署一下就可以了過濾器(Filter):如果在web項目中,建立了一個過濾器,那么每次訪問web中的servlet的之前時候,就會自動調用該過濾器中的代碼每次設置編碼--修改編碼建立過濾器->建立類CodeFilter 想成為過濾器怎么辦?實現一個接口Filter--> 代碼寫在doFilter 輸出過濾器“過濾器被執行了”-->配置過濾器文件xml-<filter><filter-name>codeFilter</filter-name><filter-class>com.mao.CodeFilter</filter-class></filter>-<filter-mapping><filter-name>codeFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>啟動tomcat不啟動過濾器-->訪問test7-->啥都沒有,標簽也沒有了
--->當過濾器過濾信息之后,會停止后面要運行的內容-->網頁要出來哈->doFilter(父類對象 參數FilterChain->)FilterChain : 過濾器鏈系統不知道后面還有沒有過濾器->在doFileter里使用//調用過濾器鏈:如果后面有過濾器,就會執行后面的過濾,//如果沒有,就會繼續執行網站后面的內容arg2.doFilter(arg0, arg1);//凈水層,沒有了要排除來水--->系統如何知道過濾器的順序?順序在哪里?根據xml里先后順序編碼調一下,在doFileter里加上 arg0.setCharacterEncoding("UTF-8");--->測試test1 訪問網頁時候會執行過濾器 還可以寫響應編碼,jsp響應編碼在coding里,先過濾器,后網頁 訪問一次網頁,執行一次過濾器-->
url重寫--> Servlet顯示單個用戶如何寫
showSingleUser.do?id=5 wumao-->建立一個servlet showSingleUser /*留個doget 輸出“觸發了”public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//測試ip request.getLocalAddr();后加//String str1 = request.getPathInfo();//System.out.println(str1.substring(1)); System.out.println("觸發了");}此時訪問所有的網頁都會觸發訪問加上/user/* 帶有user會訪問-->上面注釋的內容 截取字符串做門戶網站,都會寫url形式 帶有尾巴的不好看作業類似億流網絡
user/sanmao
?