jspservlet入门小项目--留言管理
一,jsp,servlet基礎知識
1,jsp有一些內置對象,常用的有:
out(PrintWriter),request(HttpServletRequest),response(HttpServletresponse),session(HttpSession),application(ServletContext)
注意:建議html和java代碼分開。
2,<%@ include file="要包含的頁面路徑" %>,這種叫靜態包含。
<jsp:include page="要包含的頁面路徑" /> ,這叫做動態包含。
靜態包含:導入文件會先被編譯成html文件才進行導入。(會編譯成一個servlet)
動態包含:(多個servlet,運行的時候包含進來)不進行任何編譯,直接將要導入的文件原樣導入,然后在被導入頁面進行編譯。
最佳實踐:開發中90%使用靜態包含。因為使用動態包含效率低而且有可能會出現變量的重名。其他比如權限用動態。
3,如果希望在不同頁面中傳遞對象,可以通過xx.setAttribute("xx",obj)完成設置,可以通過xx.getAttribute("xx",obj)來接收。
可以傳遞對象的內置對象有如下一些:
.pageContext(對于servlet而言沒有)
當前頁面存在,當發生跳轉之后數據丟失。
.request(HttpServletRequest)
當前頁面存在,服務器跳轉存在,客戶端跳轉不存在
.session(HttpSession)
只有瀏覽器關閉session才會丟失。否則一直存在
.application(ServletContext)
只要服務器沒有重啟就一直存在
使用原則:
能用pageContext就不用request,能用request就不用session,能用session就不用application。
重定向response.sendRedirect,跳轉之后仍會執行完剩下的代碼才進行跳轉。
一定注意:在response.sendRedirect后加上 return;不能通過參數傳中文。
4,解決亂碼問題,使用filter
1 <filter> 2 <filter-name>CharEncoding</filter-name> 3 <filter-class>tk.dongyeblog.shop.filter.CharFilter</filter-class> 4 <init-param> 5 <param-name>encoding</param-name> 6 <param-value>UTF-8</param-value> 7 </init-param> 8 </filter> 9 <filter-mapping> 10 <filter-name>CharEncoding</filter-name> 11 <url-pattern>/*</url-pattern> 12 </filter-mapping>定義filter實現Filter接口。通過request.setCharacterEncoding(encoding);設置編碼。
1 @Override 2 public void doFilter(ServletRequest request, ServletResponse response, 3 FilterChain chain) throws IOException, ServletException { 4 request.setCharacterEncoding(encoding); 5 chain.doFilter(request, response); 6 7 } 1 @Override 2 public void init(FilterConfig cfg) throws ServletException { 3 String e = cfg.getInitParameter("encoding"); 4 if(e==null || "".equals(e)){ 5 encoding = "UTF-8"; 6 }else{ 7 encoding = e; 8 } 9 }通過<init-param></init-param>來設置初始化編碼。
5,判斷是否登錄。如果未登錄不讓訪問admin目錄
web.xml配置
1 <filter> 2 <filter-name>AdminCheckFilter</filter-name> 3 <filter-class>tk.dongyeblog.shop.filter.AdminCheckFilter</filter-class> 4 </filter> 5 <filter-mapping> 6 <filter-name>AdminCheckFilter</filter-name> 7 <url-pattern>/admin/*</url-pattern> 8 </filter-mapping> 1 @Override 2 public void doFilter(ServletRequest request, ServletResponse response, 3 FilterChain chain) throws IOException, ServletException { 4 HttpServletRequest req = (HttpServletRequest)request; 5 HttpServletResponse resp = (HttpServletResponse)response; 6 HttpSession session = req.getSession(); 7 User u = (User)session.getAttribute("loginUser"); 8 if(u==null){ 9 resp.sendRedirect(req.getContextPath()+"/loginInput.jsp"); 10 } 11 chain.doFilter(request, response); 12 }?
?
轉載于:https://www.cnblogs.com/dongye/p/3242111.html
總結
以上是生活随笔為你收集整理的jspservlet入门小项目--留言管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【测试】接口测试介绍
- 下一篇: 【测试】用例设计思路-输入框类型功能