對于JSP入門的人來說,點點滴滴的基礎知識是很重要的,從簡單的工具Jcreater4.0開始入手,到擁有Ecliplse之后的快速開發,對于一個初學者都是一個成長的過程。
那么現在開始我們的話題,JSP入門,包括Servlet技術(Servelt入門,會話跟蹤,JavaMal和Servlet.)、JSP技術(JSP 簡介,JSP腳本和指令的使用,JSP隱式對象,JavaBean與JSP中的標準動作,JSP表達式語言,自定義標簽,JSP自定義表簽庫)、過濾器的 設計模式(過濾器和MVC設計模式)
一.JSP入門之Servlet知識及常見錯誤和規律.
1.桌面運行程序與WEB應用程序在過程實質是一樣的---基于請求與響應的過程.
2.http協議(超文本傳輸協議)
◆無狀態:多次請求信息之間無聯系.
◆用于internet發送請求和響應消息
◆使用端口接收和發送消息,默認為80端口.
端口:為內存緩沖區(多線程接收數據)
3.什么是Servlet?
Server let服務器端小程序.
用來處理客戶端發送的請求,并由服務器響應給客戶端的java編寫的程序.
Servlet只在服務器運行
4.Servlet詳解:
◆源碼演示:
- import java.io.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- import java.util.*;
- public class MyServlet extends HttpServlet
- {
- public void doGet(HttpServletRequest request,HttpServletResponse response)
- throws ServletException,IOException
- {
- response.setContentType("text/html;charset=gb2312");
- request.setCharacterEncoding("gb2312");
- response.sendRedirect("Login.jsp"); //重定向方法
- request.getParameter(""); //讀取客戶端數據
- / /以下方法為轉發,不同于重定向的是:轉發時數據不丟失.
- ServletContext context=this.getServletContext();
- RequestDispatcher dispatcher=context.getRequestDispatcher("/welcome.jsp");
- dispatcher.forward(request,response);
- ...//以下方法為包含(用得相對較少)
- dispatcher.include(request,response);
- }
- public void doPost(HttpServletRequest request,HttpServletResponse response)
- throws ServletException,IOException
- {
- doGet(request,response);
- }
- }
◆當需要向Servlet傳遞參數的時候,Src="Servlet?name=' ' ";
5.執行servlet時,發生下載提示:
◆可能性一:text/html;charset=GBK中間分號寫成逗號.
◆可能性二:XML中配置信息出錯.
◆可能性三:如定義全局變量時,例:CONTENT_TYPED在以后所用中放在雙引號之中.
◆可能性四:當上面的text/html,charset中寫錯字符的時候,也會提示下載.
6.執行servlet時,發生404錯誤:
◆多為xml中配置出錯.
◆可能在servlet通信方法中url出錯.
◆表單提交時:action路徑.
◆比較弱智的錯誤就是標記寫錯,請仔細檢查.
7.執行servlet時,發生403錯誤:
◆tomcat下站點里發生錯誤.
8.執行servlet時,發生405錯誤:
◆servlet中沒有post提交方法時.
9.執行servlet時,發生500錯誤:
◆多數為servlet程序代碼中發生異常錯誤.
10.執行時,取出的數據為null.就要根據實際情況對應錯誤提示去找.
11.執行jsp頁時,發生500錯誤提示.... ◆多數為jsp頁面在轉譯過程中發生編譯錯誤! 甚是嚴重錯誤,可以按提示回頭去找...
二.JSP入門之XML配置方面
◆源碼演示
- ﹤!--config中的配置信息,當中配置需要在servlet中的xml中--﹥
- ﹤servlet﹥
- ﹤init-param﹥
- ﹤param-name﹥sess﹤/param-name﹥
- ﹤param-class﹥com.serv﹤param-class﹥
- ﹤/init-param﹥
- ﹤servlet-name﹥Myservlet﹤/servlet-name﹥
- ﹤servlet-class﹥com.Myservetl﹤/servlet-class﹥
- ﹤/servlet﹥
- ﹤!--此為對Myservlet進行映射--﹥
- ﹤servlet-mapping﹥
- ﹤servlet-name﹥Myservlet﹤/servlet-name﹥
- ﹤servlet-class﹥/url﹤/servlet-class﹥
- ﹤servlet-mapping﹥
- ﹤!--context中配置信息--﹥
- ﹤context-param﹥
- ﹤param-name﹥ses﹤/param-name﹥
- ﹤param-class﹥com.ser﹤/param-class﹥
- ﹤/context-param﹥
◆配置信息只能讀取,并且config是在單個Servlet中能訪問,context是全局訪問
三.JSP入門之會話跟蹤技術方面
◆用戶授權
◆隱藏表單域
◆URL重寫
◆Cookie使用
1.會話:是同一客戶端和服務器之間在同一段時間的多次請求和響應.
2.Session使用(重點)
- HttpSession session=request.getSession();
- session.setAttribute("name",Object); //附值
- session.getAttribute(); //取值
- session.removeAttributer();
3.Cookie(類)
1).Cookie是什么?
cookie是一段字符串,由HTTP支持,在客戶端可以永久保存.寫入(硬盤).
每次請求,響應中都會為cookie留有空間.
2).用法:
- Cookie cookie=new Cookie("name",cookie); //必須指定cookie的鍵與值,且必須為字符串.
- response.addcookie(cookie);
- cookie.setMaxAge(3600); //以秒為單位.
- //讀取客戶端發送過來的cookie,返回值類型為: cookie數組
- request.getCookies();
- //循環讀取鍵與值.
使用過程:
(1).生成cookie, new cookie("","")
(2).設置生存周期 ﹥0,SetMaxAge(秒).
(3).發送到客戶端:response.addCookie(cookie);
小常識:
(1).一個網站多向一個客戶端寫20個cookie.
(2).一個客戶端多接收300個cookie.
4.Session與Cookie這間的關系:
session的ID作為Cookie的值在客戶端與服務器之間進行傳遞.
四.JSP入門之構建實體Bean的原則方面:
1.bean類為公有
2.類成員為私有
3.必有一個無參構造
4.有set()和get()方法
5.方法命名為setXxx()或getXxx()方法
五.JSP入門之MVC實現數據封裝方面
此數據封裝標準按MVC總結.
所需內容:
◆Servlet
◆JavaBean
◆OperBean(DBconnection)
◆Jsp
由Servlet提取前臺數據,然后將數據封裝于JavaBean中,再實例化OperBean,調用OperBean中方法。
將JavaBean對象以參數的形式傳過去,并進行一系列的操作后,返回數據存入ArrayList中或者其它集合內,并將集合對象封裝Session對象中,便于在前臺取值.
◆Servlet控制:
- ........
- Arraylist lis=new ArrayList();
- String name=request.getParameter("username");
- JavaBean bean=new JavaBean();
- bean.setName(name);
- OperBean oper=new OperBean();
- lis=oper.operMethod(bean);
- HttpSession session=request.getSession();
- session.setAttribute("list",lis);
◆OperBean邏輯:
- ...
- public ArrayList OperMethod(JavaBean bean)
- {
- ArrayList lis=new ArrayList();
- String usr=bean.getName("name");
- String sql="select * from student where name='"+usr+"'";
- DBconnection db=new DBconnection();
- ...//操作數據業務
- return lis;
- }
◆前臺業務:
- ...
- ArrayList list=(ArrayList)session.getAttribute("lis");
- Iterator ite=list.iterator();
- while(ite.harNext()) //遍歷輸出
- {
- JavaBean bean=(JavaBean)ite.next();
- ...
- //取bean中值
- }
- //由此可以進行"用戶登陸","數據的增刪改查","注銷登陸"等操作.....
以上所有Jsp入門技術都是沒有與struts等框架相關的,只是簡單的MVC思想,只有懂得以上簡單的思想,才可以進一步的對框架這些高層次的東西鉆研,對于JSP入門的開始,還有好多知識不懂,很多都在不停的學習之中,要多多總結才能提升!