2ã€å¦‚何执行一个线½E‹å®‰å…¨çš„JSP?Â
 åªéœ€å¢žåŠ å¦‚ä¸‹æŒ‡ä×oÂ
 <%@ page isThreadSafe="false" %>Â
 3ã€JSP如何处ç†HTML FORMä¸çš„æ•°æ®?Â
 通过内置的request对象å›_¯åQŒå¦‚下:Â
 <%Â
 String item = request.getParameter("item");Â
 int howMany = new Integer(request.getParameter("units")).intValue();Â
 %>Â
 4ã€åœ¨JSP如何包å«ä¸€ä¸ªé™æ€æ–‡ä»?Â
Â é™æ€åŒ…å«å¦‚下:<%@ include file="copyright.html" %>Â
 动æ€åŒ…å«å¦‚下:<jsp:include page="copyright.html" flush="true"/>Â
 5ã€åœ¨JSPä¸å¦‚何ä‹É用注é‡?Â
Â ä¸»è¦æœ‰å››ä¸æ–¹æ³•:Â
 1ã€?lt;%-- 与Â?-%>Â
 2ã€?/Â
 3ã€?**ä¸?*/Â
 4ã€?lt;!--ä¸?->Â
 6ã€åœ¨JSPä¸å¦‚何执行æµè§ˆé‡å®šå‘?Â
 使用如下方å¼å›_¯åQšresponse.sendRedirect("http://ybwen.home.chinaren.com/index.html");Â
 也能物ç†åœ°æ”¹å˜HTTP HEADER属性,如下åQšÂ?br /> <%Â
 response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);Â
 String newLocn="/newpath/index.html";Â
 response.setHeader("Location",newLocn);Â
 %>Â
 7ã€å¦‚何防æ¢åœ¨JSP或SERVLETä¸çš„输出ä¸è¢«BROWSERä¿å˜åœ¨CACHEä¸?Â
Â æŠŠå¦‚ä¸‹è„šæœ¬åŠ å…¥åˆ°JSPæ–‡äšg的开始å³å¯ï¼šÂ
 <%Â
 response.setHeader("Cache-Control","no-store"); //HTTP 1.1Â
 response.setHeader("Pragma","no-cache"); //HTTP 1.0Â
 response.setDateHeader ("Expires", 0); //prevents caching at the proxy serverÂ
 %>Â
 8ã€åœ¨JSPä¸å¦‚何设¾|®COOKIE?Â
 COOKIE是作为HTTP HEADER的一部分被å‘é€çš„åQŒå¦‚下方法å³å¯è®¾¾|®ï¼šÂ
 <%Â
 Cookie mycookie = new Cookie("aName","aValue");Â
 response.addCookie(mycookie);Â
 %>Â
 9ã€åœ¨JSPä¸å¦‚ä½•åˆ é™¤ä¸€ä¸ªCOOKIE?Â
 <%Â
 Cookie killMyCookie = new Cookie("mycookie", null);Â
 killMyCookie.setMaxAge(0);Â
 killMyCookie.setPath("/");Â
 response.addCookie(killMyCookie);Â
 %>Â
 10ã€åœ¨ä¸€ä¸ªJSP的请求处ç†ä¸å¦‚ä½•åœæ¢JSP的执行Â?br /> 如下例:Â
 <%Â
 if (request.getParameter("wen") != null) {Â
 // do somethingÂ
 } else {Â
 return;Â
 }Â
 %>Â
 11ã€åœ¨JSPä¸å¦‚何定义方法Â?br />Â ä½ å¯ä»¥å®šä¹‰æ–¹æ³•ï¼Œä½†æ˜¯ä½ ä¸èƒ½ç›´æŽ¥è®¿é—®JSP的内¾|®å¯¹è±¡ï¼Œè€Œæ˜¯é€šè¿‡å‚æ•°çš„æ–¹æ³•ä¼ é€’ã€‚å¦‚ä¸‹ï¼šÂ
 <%!Â
 public String howBadFrom(HttpServletRequest req) {Â
 HttpSession ses = req.getSession();Â
 ...Â
 return req.getRemoteHost();Â
 }Â
 %>Â
 <%Â
 out.print("in general,lao lee is not baddie ");Â
 %>Â
 <%= howBadFrom(request) %>Â
 12ã€å¦‚æžœBROWSER已关é—了COOKIESåQŒåœ¨JSP䏿ˆ‘如何打开SESSIONæ¥è·ŸítªÂ?br /> 使用URLé‡å†™å›_¯åQŒå¦‚下:Â
 hello1.jspÂ
 <%@ page session="true" %>Â
 <%Â
 Integer num = new Integer(100);Â
 session.putValue("num",num);Â
 String url =response.encodeURL("hello2.jsp");Â
 %>Â
 <a href=<%=url%>>hello2.jsp</a>Â
 hello2.jspÂ
 <%@ page session="true" %>Â
 <%Â
 Integer i= (Integer )session.getValue("num");Â
 out.println("Num value in session is "+i.intValue());Â
 %>Â
 13ã€åœ¨JSPä¸èƒ½å‘é€EMAILå—Â?br /> å¯ä»¥ä½¿ç”¨SUN的专用包åQšsun.net.smtp包。如下脚本ä‹É用SmtpClient¾cÕd‘é€EMAIL。Â?br /> <%@ page import="sun.net.smtp.SmtpClient, java.io.*" %>Â
 <%Â
 String from="ybwen@sina.com";Â
 String to="hewenjun@yeah.net, lei@who.com.cn";Â
 try{Â
 SmtpClient client = new SmtpClient("mail.xxxxx.xxx");Â
 client.from(from);Â
 client.to(to);Â
 PrintStream message = client.startMessage();Â
 message.println("To: " + to);Â
 message.println("Subject: Sending email from JSP!");Â
 message.println("This was sent from a JSP page!");Â
 message.println();Â
 message.println("Cool! :-)");Â
 message.println();Â
 message.println("Good Boy");Â
 message.println("Im in genius.com");Â
 message.println();Â
 client.closeServer();Â
 }Â
 catch (IOException e){Â
 System.out.println("ERROR SENDING EMAIL:"+e);Â
 }Â
 %>Â
 14ã€åœ¨SERVLET䏿ˆ‘能调用一个JSP错误™åµå—Â
 当然没问题,如下展示了如何在一个SERVLET控制逻辑å•元内调用一个JSP错误™åµé¢ã€‚Â?br /> protected void sendErrorRedirect(HttpServletRequest request,Â
 HttpServletResponse response, String errorPageURL,Â
 Throwable e)Â
 throws ServletException, IOException {Â
 request.setAttribute ("javax.servlet.jsp.jspException", e);Â
 getServletConfig().getServletContext().Â
 getRequestDispatcher(errorPageURL).forward(request,Â
 response);Â
 }Â
 public void doPost(HttpServletRequest request,HttpServletResponse response) {Â
 try {Â
 // do somethingÂ
 } catch (Exception ex) {Â
 try {Â
 sendErrorRedirect(request,response,"/jsp/MyErrorPage.jsp",ex);Â
 } catch (Exception e) {Â
 e.printStackTrace();Â
 }Â
 }Â
 }Â
 15ã€JSPå’ŒAPPLET如何通讯Â
 JSP如何与EJB SessionBean通讯Â
 下é¢çš„ä»£ç æ®µä½œäº†å¾ˆå¥½çš„示范Â?br /> <%@ page import="javax.naming.*, javax.rmi.PortableRemoteObject,Â
 foo.AccountHome, foo.Account" %>Â
 <%!Â
 //定义一个对SessionBeanHome接å£å®žä¾‹çš„全局引用Â
 AccountHome accHome=null;Â
 public void jspInit() {Â
 //获得Home接å£å®žä¾‹Â
 InitialContext cntxt = new InitialContext( );Â
 Object ref= cntxt.lookup("java:comp/env/ejb/AccountEJB");Â
 accHome = (AccountHome)PortableRemoteObject.narrow(ref,AccountHome.class);Â
 }Â
 %>Â
 <%Â
 //实例化SessionBeanÂ
 Account acct = accHome.create();Â
 //调用˜qœç¨‹æ–ÒŽ³•Â
 acct.doWhatever(...);Â
 // 如椽{‰ç‰Â
 %>Â
 16ã€å½“我ä‹É用一个结果集æ—Óž¼Œå¦‚何防æ¢å—段ä¸?null"çš„å—域显½Cºåœ¨æˆ‘çš„HTML输入文本域ä¸?Â
 å¯ä»¥å®šä¹‰ä¸€ä¸ªç®€å•的函数æ¥è¾¾åˆ°ç›®çš„,如下åQšÂ?br /> <%!Â
 String blanknull(String s) {Â
 return (s == null) ? "" : s;Â
 }Â
 %>Â
 然åŽåœ¨JSPçš„FORMä¸ï¼Œå¯ä»¥˜q™æ ·ä½¿ç”¨Â
 <input type="text" name="shoesize" value="<%=blanknull(shoesize)%>">Â
 17ã€å¦‚何ä¸SERVLET或JSP下è²ä¸€ä¸ªæ–‡ä»Óž¼ˆå¦‚:binary,text,executable)åQŸÂ?br /> 现æä¾›ä¸¤ä¸ªè§£å†Ïx–¹æ¡ˆï¼šÂ
 AåQšä‹É用HTTPåQŒÂ?br /> BåQšåœ¨Servletä¸ï¼Œé€šè¿‡è®„¡½®ContentTypeå’Œä‹É用java.io包的Stream½{‰ç±»å¯ä½œåˆ?例如åQšÂ?br /> response.setContentType("application/x-msword");Â
Â ç„¶åŽæƒŒ™¾“出缓冲ä¸å†™ä¸€äº›ä¸œä¸œå³å¯ã€‚Â?/p>
 18ã€ä‹É用useBeanæ ‡å¿—åˆå§‹åŒ–BEAN时如何接å—åˆå§‹åŒ–傿•°Â
Â ä½¿ç”¨å¦‚ä¸‹ä¸¤æ ‡½{‘Ö³å¯ï¼šÂ
 <jsp:getProperty name="wenBean" property="someProperty"/>Â
 <jsp:setProperty name="wenBean" property="someProperty" value="someValue"/>Â
 19ã€ä‹É用JSP如何获得客户‹¹è§ˆå™¨çš„ä¿¡æ¯åQŸÂ?br /> 使用request.getHeader(String)å›_¯Â
 20ã€èƒ½è±¡è°ƒç”¨å½E‹åºä¸€æ ¯‚°ƒç”¨JSPå—?Â
 当然å¯ä»¥åQŒç”¨<jsp:include page="relativeURL" flush="true"/>Â
 21ã€å½“我釾~–译我的JSP使用的一个类åŽï¼Œä¸ÞZ»€ä¹ˆJVM¾l§ç®‹ä½¿ç”¨æˆ‘çš„è€CLASSåQŸÂ?/p>
 <%@include file="abc.jsp"%>ä¸?lt;jsp:include page="abc.jsp"/>之间的差别?Â
 å‰ä¸€ä¸ªäØ“é™æ€åŒ…å«ï¼Œè€ŒåŽä¸€ä¸ªäؓ动æ€åŒ…å«Â?/p>
 22ã€JSP的缺点?Â
 1。对JAVA½E‹åº˜q›è¡Œè°ƒè¯•没有好东东Â?br /> 2ã€‚å› å¤§å¤šæ•°çš„servletå¼•æ“Žä¸æ”¯æŒconnection poolingÂ
 3。Servletå¼•æ“Žæ²¡æœ‰æ ‡å‡†Â
 4。JSP与其它脚本è¯a€çš„交互Â?/p>
 23ã€JSP能进行递归调用å—?Â
 当然å¯ä»¥,如对formçš„æäº¤ç»™æœ¬é¡µÂ
 34ã€å¦‚何实现JSP的国际化åQŸÂ?br /> 为儿U版本æä¾›resource bundles属性文件å³å¯Â?/p>
 25ã€åœ¨JSPä¸å¦‚何写文本文äšgåQŸÂ?br /> 使用PrintWriter对象åQŒå¦‚åQšÂ?br /> <%@ page import="java.io.*" %>Â
 <%Â
 String str = "print me";Â
 String nameOfTextFile = "/usr/anil/imp.txt";Â
 try {Â
 PrintWriter pw = new PrintWriter(new FileOutputStream(nameOfTextFile));Â
 pw.println(str);Â
 pw.close();Â
 } catch(IOException e) {Â
 out.println(e.getMessage());Â
 }Â
 %>Â
 26ã€å¦‚何在JSPä¸åŒ…括ç»å¯¹èµ\径文ä»Óž¼ŸÂ
 使用URLConnectionå›_¯ã€‚Â?/p>
 27ã€åœ¨servletså’ŒJSP之间能共享session对象å—?Â
 当然å¯ä»¥åQŒÂ?br /> HttpSession session = request.getSession(true);Â
 session.putValue("variable","value");Â
 28ã€JavaScriptçš„å˜é‡èƒ½å¤åˆ¶åˆ°JSPçš„SESSIONä¸å—åQŸÂ?/p>
 29ã€å¦‚何设¾|®cookie在æŸä¸€æ—‰™—´åŽè¿‡æœŸï¼ŸÂ
 用Cookie.setMaxAge(int)Â
 30ã€å¦‚何获得当å‰çš„sessions敎ͼŸÂ
 å¯ä»¥ä½¿ç”¨HttpSessionBindingListenersæ¥è·ŸítªÂ?/p>
 31ã€èƒ½è®„¡½®ä¸€äº›ä»£ç 在我所有的JSPæ–‡äšg之上˜q行åQŸå¦‚æžœå¯ä»¥ï¼Œèƒ½å…±äº«å—åQŸÂ?br /> 当然å¯ä»¥,å¯ä»¥ä¸ÞZ½ çš„JSPæ–‡äšg定义一个别å?/jsp/=ybwen.genius.myPreprocessingServlet,而以/jsp/为剾~€çš„æ–‡ä»¶å¯ä»¥ä‹É用Â?/p>
 32ã€å¯¹ä¸€ä¸ªJSP™åµï¼Œå¦‚æžœå¤šä¸ªå®¢æˆ·ç«¯åŒæ—¶è¯·æ±‚它åQŒåŒæ¥å¯èƒ½å—åQŸÂ?br /> 在jsp:useBeanè¯æ³•ä¸ä‹É用beanName有何好处åQŸÂ?br /> beanName使用Beans.instantiate()åˆå§‹åŒ–BeanÂ
 33ã€å½“我ä‹Éç”?lt;jsp:forward>æ—Óž¼Œåœ¨æµè§ˆå™¨çš„åœ°å€æ 没有改å˜ï¼ŸÂ
 使用response.sendRedirect("newURL")Â
 34ã€å¦‚何è{æ¢JSP 0.9版本的文件到JSP1.1?Â
 å¯ä‹É用sed/awkå›_¯Â
 35ã€ä‹É用JSP能设¾|®HTML FORMä¸è¾“入域的焦点,ä¸ç”¨JavaScript?Â
 没办法�/p>
 36ã€ä‹É用JSP˜qžæŽ¥åˆ°æ•°æ®åº“˜qžæŽ¥¾~“å†²æ± çš„æœ€å¥½æ–¹æ³•æ˜¯ä»€ä¹ˆï¼ŸÂ
 1.使用JDBC2ã€?ä¸å¸¦æœ‰æ¤æœåŠ¡çš„DriverÂ
 2.使用æä¾›æœ‰æ¤æœåŠ¡çš„Application serverÂ
 3.自己�br />