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




























