servlet 基本結(jié)構(gòu)
public class ServletClass extends HttpServlet {
public void doGet(HttpServletRequest request, HttpSevletResponse response)
throws ServletException,IOException{
//Use “request” to read incoming HTTP headers
//Use “response” to specify the HTTP response status
//use “out” to send content to browser
PrintWriter out = response.getWriter();
}
}
如果希望servlet對(duì)GET和POST請(qǐng)求采用同樣的行動(dòng),只需要讓doGet調(diào)用doPost,反之亦然。
值得注意的是doGet和doPost都要接收以上兩種類型的參數(shù)。
servlet 處理表單數(shù)據(jù)
表單數(shù)據(jù)
(1)使用FORM來(lái)創(chuàng)建HTML表單
<FORM ACTION="..."> 其中 "..."指的就是處理表單的servlet 或者JSP
(2)使用輸入元素收集用戶數(shù)據(jù)
<INPUT TYPE="TEXT" NAME="...">
(3)在接近表單的尾部放置提交按鈕
<INPUT TYPE="SUBMIT">
讀取表單數(shù)據(jù)
有三種情況:①request.getParameter②request.getParameterValues
③request.getParameterNames
getParameter對(duì)應(yīng)于單個(gè)值的讀取,如果有這個(gè)參數(shù)但沒(méi)值,那就返回空的String;如果沒(méi)有這個(gè)參數(shù),則返回null
getParameterValues對(duì)應(yīng)于同一個(gè)參數(shù)的多個(gè)值,返回的是一個(gè)數(shù)組,是這個(gè)參數(shù)值的集合。如果不存在這個(gè)參數(shù)名,那就返回一個(gè)null;如果這個(gè)參數(shù)只有一個(gè)值,那就返回一個(gè)只有一個(gè)元素的數(shù)組。
getParameterValues返回的是所有參數(shù)的一個(gè)Enumeration,如果沒(méi)有參數(shù),那返回的就是一個(gè)空的Enumeration而不是null。同時(shí)這個(gè)Enumeration中的次序是亂序的。
要對(duì)參數(shù)為null或者為空String的情況作出相應(yīng)的處理
if((param==null)||(param.trim().equals(""))){...}
RequestDispatcher
下面的代碼:
RequestDispatcher dispatcher = request.getRequestDispathcer s(address);
dispatcher.forward (request,response);
JSP
JSP直接插入表達(dá)式
<%= Java Expression%> 比如:<%= new java.util.Date() %>
其實(shí),JSP在后臺(tái)都被轉(zhuǎn)化成servlet,所以servlet 和 JSP沒(méi)有本質(zhì)的區(qū)別。
scriptlet
說(shuō)白了,就是直接在JSP頁(yè)面中插入java代碼,我不是很喜歡,太亂了。舉個(gè)例子:
<% if(Math.random()<0.5) {%>
<H1>Have a <I>nice</I> day!</H1>
<% } else {%>
<H1>Have a <I>lousy</I>day!</H1>
<% } %>
JSP page指令
import 屬性
<%@ import = "package.class"%>
<%@ import = "package.class1,package.class2...package.classN"%>
contentType和pageEncoding屬性
<%@ page contentType = "someMimeType; charset = someCharacterSet"%>
比如<%@ page contentType = "application/vnd.ms-excel"%>
pageEncoding指的是字符集
比如設(shè)置成日語(yǔ):<%@ page pageEncoding="Shift_JIS"%>
session屬性
控制頁(yè)面是否參加HTTP會(huì)話
<%@ page session = "true"%>
isELIgnored屬性
是否忽略JSP2.0表達(dá)式語(yǔ)言
<%@ page isELIgnored = "ture"%>
此外還有buffer、autoFlush、errorPage、isErrorPage、isThreadSafe、extends、language屬性
在JSP中使用JavaBean
基本要掌握三個(gè)語(yǔ)句
<jsp: useBean id="beanName" class="package.class"/>
<jsp:getProperty name = "beanName" property="propertyName"/>
<jsp:setProperty name ="beanName" property="propertyName" value="propertyValue"/>