對于JSP入門的人來說,點(diǎn)點(diǎn)滴滴的基礎(chǔ)知識是很重要的,從簡單的工具Jcreater4.0開始入手,到擁有Ecliplse之后的快速開發(fā),對于一個(gè)初學(xué)者都是一個(gè)成長的過程。
那么現(xiàn)在開始我們的話題,JSP入門,包括Servlet技術(shù)(Servelt入門,會話跟蹤,JavaMal和Servlet.)、JSP技術(shù)(JSP 簡介,JSP腳本和指令的使用,JSP隱式對象,JavaBean與JSP中的標(biāo)準(zhǔn)動(dòng)作,JSP表達(dá)式語言,自定義標(biāo)簽,JSP自定義表簽庫)、過濾器的 設(shè)計(jì)模式(過濾器和MVC設(shè)計(jì)模式)
一.JSP入門之Servlet知識及常見錯(cuò)誤和規(guī)律.
1.桌面運(yùn)行程序與WEB應(yīng)用程序在過程實(shí)質(zhì)是一樣的---基于請求與響應(yīng)的過程.
2.http協(xié)議(超文本傳輸協(xié)議)
◆無狀態(tài):多次請求信息之間無聯(lián)系.
◆用于internet發(fā)送請求和響應(yīng)消息
◆使用端口接收和發(fā)送消息,默認(rèn)為80端口.
端口:為內(nèi)存緩沖區(qū)(多線程接收數(shù)據(jù))
3.什么是Servlet?
Server let服務(wù)器端小程序.
用來處理客戶端發(fā)送的請求,并由服務(wù)器響應(yīng)給客戶端的java編寫的程序.
Servlet只在服務(wù)器運(yùn)行
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(""); //讀取客戶端數(shù)據(jù)
- / /以下方法為轉(zhuǎn)發(fā),不同于重定向的是:轉(zhuǎn)發(fā)時(shí)數(shù)據(jù)不丟失.
- 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);
- }
- }
◆當(dāng)需要向Servlet傳遞參數(shù)的時(shí)候,Src="Servlet?name=' ' ";
5.執(zhí)行servlet時(shí),發(fā)生下載提示:
◆可能性一:text/html;charset=GBK中間分號寫成逗號.
◆可能性二:XML中配置信息出錯(cuò).
◆可能性三:如定義全局變量時(shí),例:CONTENT_TYPED在以后所用中放在雙引號之中.
◆可能性四:當(dāng)上面的text/html,charset中寫錯(cuò)字符的時(shí)候,也會提示下載.
6.執(zhí)行servlet時(shí),發(fā)生404錯(cuò)誤:
◆多為xml中配置出錯(cuò).
◆可能在servlet通信方法中url出錯(cuò).
◆表單提交時(shí):action路徑.
◆比較弱智的錯(cuò)誤就是標(biāo)記寫錯(cuò),請仔細(xì)檢查.
7.執(zhí)行servlet時(shí),發(fā)生403錯(cuò)誤:
◆tomcat下站點(diǎn)里發(fā)生錯(cuò)誤.
8.執(zhí)行servlet時(shí),發(fā)生405錯(cuò)誤:
◆servlet中沒有post提交方法時(shí).
9.執(zhí)行servlet時(shí),發(fā)生500錯(cuò)誤:
◆多數(shù)為servlet程序代碼中發(fā)生異常錯(cuò)誤.
10.執(zhí)行時(shí),取出的數(shù)據(jù)為null.就要根據(jù)實(shí)際情況對應(yīng)錯(cuò)誤提示去找.
11.執(zhí)行jsp頁時(shí),發(fā)生500錯(cuò)誤提示.... ◆多數(shù)為jsp頁面在轉(zhuǎn)譯過程中發(fā)生編譯錯(cuò)誤! 甚是嚴(yán)重錯(cuò)誤,可以按提示回頭去找...
二.JSP入門之XML配置方面
◆源碼演示
- ﹤!--config中的配置信息,當(dāng)中配置需要在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進(jìn)行映射--﹥
- ﹤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是在單個(gè)Servlet中能訪問,context是全局訪問
三.JSP入門之會話跟蹤技術(shù)方面
◆用戶授權(quán)
◆隱藏表單域
◆URL重寫
◆Cookie使用
1.會話:是同一客戶端和服務(wù)器之間在同一段時(shí)間的多次請求和響應(yīng).
2.Session使用(重點(diǎn))
- HttpSession session=request.getSession();
- session.setAttribute("name",Object); //附值
- session.getAttribute(); //取值
- session.removeAttributer();
3.Cookie(類)
1).Cookie是什么?
cookie是一段字符串,由HTTP支持,在客戶端可以永久保存.寫入(硬盤).
每次請求,響應(yīng)中都會為cookie留有空間.
2).用法:
- Cookie cookie=new Cookie("name",cookie); //必須指定cookie的鍵與值,且必須為字符串.
- response.addcookie(cookie);
- cookie.setMaxAge(3600); //以秒為單位.
- //讀取客戶端發(fā)送過來的cookie,返回值類型為: cookie數(shù)組
- request.getCookies();
- //循環(huán)讀取鍵與值.
使用過程:
(1).生成cookie, new cookie("","")
(2).設(shè)置生存周期 ﹥0,SetMaxAge(秒).
(3).發(fā)送到客戶端:response.addCookie(cookie);
小常識:
(1).一個(gè)網(wǎng)站多向一個(gè)客戶端寫20個(gè)cookie.
(2).一個(gè)客戶端多接收300個(gè)cookie.
4.Session與Cookie這間的關(guān)系:
session的ID作為Cookie的值在客戶端與服務(wù)器之間進(jìn)行傳遞.
四.JSP入門之構(gòu)建實(shí)體Bean的原則方面:
1.bean類為公有
2.類成員為私有
3.必有一個(gè)無參構(gòu)造
4.有set()和get()方法
5.方法命名為setXxx()或getXxx()方法
五.JSP入門之MVC實(shí)現(xiàn)數(shù)據(jù)封裝方面
此數(shù)據(jù)封裝標(biāo)準(zhǔn)按MVC總結(jié).
所需內(nèi)容:
◆Servlet
◆JavaBean
◆OperBean(DBconnection)
◆Jsp
由Servlet提取前臺數(shù)據(jù),然后將數(shù)據(jù)封裝于JavaBean中,再實(shí)例化OperBean,調(diào)用OperBean中方法。
將JavaBean對象以參數(shù)的形式傳過去,并進(jìn)行一系列的操作后,返回?cái)?shù)據(jù)存入ArrayList中或者其它集合內(nèi),并將集合對象封裝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();
- ...//操作數(shù)據(jù)業(yè)務(wù)
- return lis;
- }
◆前臺業(yè)務(wù):
- ...
- ArrayList list=(ArrayList)session.getAttribute("lis");
- Iterator ite=list.iterator();
- while(ite.harNext()) //遍歷輸出
- {
- JavaBean bean=(JavaBean)ite.next();
- ...
- //取bean中值
- }
- //由此可以進(jìn)行"用戶登陸","數(shù)據(jù)的增刪改查","注銷登陸"等操作.....
以上所有Jsp入門技術(shù)都是沒有與struts等框架相關(guān)的,只是簡單的MVC思想,只有懂得以上簡單的思想,才可以進(jìn)一步的對框架這些高層次的東西鉆研,對于JSP入門的開始,還有好多知識不懂,很多都在不停的學(xué)習(xí)之中,要多多總結(jié)才能提升!