(tng)2、如何执行一个线E安全的JSP? (tng)
(tng)只需增加如下指o(h) (tng)
(tng)<%@ (tng)page (tng)isThreadSafe="false" (tng)%> (tng)
(tng)3、JSP如何处理HTML (tng)FORM中的数据? (tng)
(tng)通过内置的request对象卛_Q如下:(x) (tng)
(tng)<% (tng)
(tng)String (tng)item (tng)= (tng)request.getParameter("item"); (tng)
(tng)int (tng)howMany (tng)= (tng)new (tng)I(yng)nteger(request.getParameter("units")).intValue(); (tng)
(tng)%> (tng)
(tng)4、在JSP如何包含一个静(rn)态文? (tng)
(tng)?rn)态包含如下:(x)<%@ (tng)include (tng)file="copyright.html" (tng)%> (tng)
(tng)动态包含如下:(x)<jsp:include (tng)page="copyright.html" (tng)flush="true"/> (tng)
(tng)5、在JSP中如何用注? (tng)
(tng)主要有四中方法:(x) (tng)
(tng)1?lt;%-- (tng)与?-%> (tng)
(tng)2?/ (tng)
(tng)3?**?*/ (tng)
(tng)4?lt;!--?-> (tng)
(tng)6、在JSP中如何执行浏览重定向? (tng)
(tng)使用如下方式卛_Qresponse.sendRedirect("http://ybwen.home.chinaren.com/index.html"); (tng)
(tng)也能物理地改变HTTP (tng)HEADER属性,如下Q?br /> (tng)<% (tng)
(tng)response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); (tng)
(tng)String (tng)newLocn="/newpath/index.html"; (tng)
(tng)response.setHeader("Location",newLocn); (tng)
(tng)%> (tng)
(tng)7、如何防止在JSP或SERVLET中的输出不被BROWSER保存在CACHE? (tng)
(tng)把如下脚本加入到JSP文g的开始即可:(x) (tng)
(tng)<% (tng)
(tng)response.setHeader("Cache-Control","no-store"); (tng)//HTTP (tng)1.1 (tng)
(tng)response.setHeader("Pragma","no-cache"); (tng)//HTTP (tng)1.0 (tng)
(tng)response.setDateHeader (tng)("Expires", (tng)0); (tng)//prevents (tng)caching (tng)at (tng)the (tng)proxy (tng)server (tng)
(tng)%> (tng)
(tng)8、在JSP中如何设|COOKIE? (tng)
(tng)COOKIE是作为HTTP (tng)HEADER的一部分被发送的Q如下方法即可设|:(x) (tng)
(tng)<% (tng)
(tng)Cookie (tng)mycookie (tng)= (tng)new (tng)Cookie("aName","aValue"); (tng)
(tng)response.addCookie(mycookie); (tng)
(tng)%> (tng)
(tng)9、在JSP中如何删除一个COOKIE? (tng)
(tng)<% (tng)
(tng)Cookie (tng)killMyCookie (tng)= (tng)new (tng)Cookie("mycookie", (tng)null); (tng)
(tng)killMyCookie.setMaxAge(0); (tng)
(tng)killMyCookie.setPath("/"); (tng)
(tng)response.addCookie(killMyCookie); (tng)
(tng)%> (tng)
(tng)10、在一个JSP的请求处理中如何停止JSP的执行?br /> (tng)如下例:(x) (tng)
(tng)<% (tng)
(tng)if (tng)(request.getParameter("wen") (tng)!= (tng)null) (tng){ (tng)
(tng)// (tng)do (tng)something (tng)
(tng)} (tng)else (tng){ (tng)
(tng)return; (tng)
(tng)} (tng)
(tng)%> (tng)
(tng)11、在JSP中如何定义方法?br /> (tng)你可以定义方法,但是你不能直接访问JSP的内|对象,而是通过参数的方法传递。如下:(x) (tng)
(tng)<%! (tng)
(tng)public (tng)String (tng)howBadFrom(HttpServletRequest (tng)req) (tng){ (tng)
(tng)HttpSession (tng)ses (tng)= (tng)req.getSession(); (tng)
(tng)... (tng)
(tng)return (tng)req.getRemoteHost(); (tng)
(tng)} (tng)
(tng)%> (tng)
(tng)<% (tng)
(tng)out.print("in (tng)general,lao (tng)lee (tng)is (tng)not (tng)baddie (tng)"); (tng)
(tng)%> (tng)
(tng)<%= (tng)howBadFrom(request) (tng)%> (tng)
(tng)12、如果BROWSER已关闭了(jin)COOKIESQ在JSP中我如何打开SESSION来跟t?br /> (tng)使用URL重写卛_Q如下:(x) (tng)
(tng)hello1.jsp (tng)
(tng)<%@ (tng)page (tng)session="true" (tng)%> (tng)
(tng)<% (tng)
(tng)I(yng)nteger (tng)num (tng)= (tng)new (tng)I(yng)nteger(100); (tng)
(tng)session.putValue("num",num); (tng)
(tng)String (tng)url (tng)=response.encodeURL("hello2.jsp"); (tng)
(tng)%> (tng)
(tng)<a (tng)href=<%=url%>>hello2.jsp</a> (tng)
(tng)hello2.jsp (tng)
(tng)<%@ (tng)page (tng)session="true" (tng)%> (tng)
(tng)<% (tng)
(tng)I(yng)nteger (tng)i= (tng)(Integer (tng))session.getValue("num"); (tng)
(tng)out.println("Num (tng)value (tng)in (tng)session (tng)is (tng)"+i.intValue()); (tng)
(tng)%> (tng)
(tng)13、在JSP中能发送EMAIL吗?br /> (tng)可以使用SUN的专用包Qsun.net.smtp包。如下脚本用SmtpClientcd送EMAIL。?br /> (tng)<%@ (tng)page (tng)import="sun.net.smtp.SmtpClient, (tng)java.io.*" (tng)%> (tng)
(tng)<% (tng)
(tng)String (tng)from="ybwen@sina.com"; (tng)
(tng)String (tng)to="hewenjun@yeah.net, (tng)lei@who.com.cn"; (tng)
(tng)try{ (tng)
(tng)SmtpClient (tng)client (tng)= (tng)new (tng)SmtpClient("mail.xxxxx.xxx"); (tng)
(tng)client.from(from); (tng)
(tng)client.to(to); (tng)
(tng)PrintStream (tng)message (tng)= (tng)client.startMessage(); (tng)
(tng)message.println("To: (tng)" (tng)+ (tng)to); (tng)
(tng)message.println("Subject: (tng)Sending (tng)email (tng)from (tng)JSP!"); (tng)
(tng)message.println("This (tng)was (tng)sent (tng)from (tng)a (tng)JSP (tng)page!"); (tng)
(tng)message.println(); (tng)
(tng)message.println("Cool! (tng):-)"); (tng)
(tng)message.println(); (tng)
(tng)message.println("Good (tng)Boy"); (tng)
(tng)message.println("Im (tng)in (tng)genius.com"); (tng)
(tng)message.println(); (tng)
(tng)client.closeServer(); (tng)
(tng)} (tng)
(tng)catch (tng)(IOException (tng)e){ (tng)
(tng)System.out.println("ERROR (tng)SENDING (tng)EMAIL:"+e); (tng)
(tng)} (tng)
(tng)%> (tng)
(tng)14、在SERVLET中我能调用一个JSP错误吗 (tng)
(tng)当然没问题,如下展示?jin)如何在一个SERVLET控制逻辑单元内调用一个JSP错误面。?br /> (tng)protected (tng)void (tng)sendErrorRedirect(HttpServletRequest (tng)request, (tng)
(tng)HttpServletResponse (tng)response, (tng)String (tng)errorPageURL, (tng)
(tng)Throwable (tng)e) (tng)
(tng)throws (tng)ServletException, (tng)I(yng)OException (tng){ (tng)
(tng)request.setAttribute (tng)("javax.servlet.jsp.jspException", (tng)e); (tng)
(tng)getServletConfig().getServletContext(). (tng)
(tng)getRequestDispatcher(errorPageURL).forward(request, (tng)
(tng)response); (tng)
(tng)} (tng)
(tng)public (tng)void (tng)doPost(HttpServletRequest (tng)request,HttpServletResponse (tng)response) (tng){ (tng)
(tng)try (tng){ (tng)
(tng)// (tng)do (tng)something (tng)
(tng)} (tng)catch (tng)(Exception (tng)ex) (tng){ (tng)
(tng)try (tng){ (tng)
(tng)sendErrorRedirect(request,response,"/jsp/MyErrorPage.jsp",ex); (tng)
(tng)} (tng)catch (tng)(Exception (tng)e) (tng){ (tng)
(tng)e.printStackTrace(); (tng)
(tng)} (tng)
(tng)} (tng)
(tng)} (tng)
(tng)15、JSP和APPLET如何通讯 (tng)
(tng)JSP如何与EJB (tng)SessionBean通讯 (tng)
(tng)下面的代码段作了(jin)很好的示范?br /> (tng)<%@ (tng)page (tng)import="javax.naming.*, (tng)javax.rmi.PortableRemoteObject, (tng)
(tng)foo.AccountHome, (tng)foo.Account" (tng)%> (tng)
(tng)<%! (tng)
(tng)//定义一个对SessionBeanHome接口实例的全局引用 (tng)
(tng)AccountHome (tng)accHome=null; (tng)
(tng)public (tng)void (tng)jspInit() (tng){ (tng)
(tng)//获得Home接口实例 (tng)
(tng)I(yng)nitialContext (tng)cntxt (tng)= (tng)new (tng)I(yng)nitialContext( (tng)); (tng)
(tng)Object (tng)ref= (tng)cntxt.lookup("java:comp/env/ejb/AccountEJB"); (tng)
(tng)accHome (tng)= (tng)(AccountHome)PortableRemoteObject.narrow(ref,AccountHome.class); (tng)
(tng)} (tng)
(tng)%> (tng)
(tng)<% (tng)
(tng)//实例化SessionBean (tng)
(tng)Account (tng)acct (tng)= (tng)accHome.create(); (tng)
(tng)//调用q程Ҏ(gu) (tng)
(tng)acct.doWhatever(...); (tng)
(tng)// (tng)如此{等 (tng)
(tng)%> (tng)
(tng)16、当我用一个结果集Ӟ如何防止字段?null"的字域显C在我的HTML输入文本域中? (tng)
(tng)可以定义一个简单的函数来达到目的,如下Q?br /> (tng)<%! (tng)
(tng)String (tng)blanknull(String (tng)s) (tng){ (tng)
(tng)return (tng)(s (tng)== (tng)null) (tng)? (tng)"" (tng): (tng)s; (tng)
(tng)} (tng)
(tng)%> (tng)
(tng)然后在JSP的FORM中,可以q样使用 (tng)
(tng)<input (tng)type="text" (tng)name="shoesize" (tng)value="<%=blanknull(shoesize)%>"> (tng)
(tng)17、如何中SERVLET或JSP下蝲一个文Ӟ如:(x)binary,text,executable)Q?br /> (tng)现提供两个解x案:(x) (tng)
(tng)AQ用HTTPQ?br /> (tng)BQ在Servlet中,通过讄ContentType和用java.io包的Stream{类可作?例如Q?br /> (tng)response.setContentType("application/x-msword"); (tng)
(tng)然后惌出缓冲中写一些东东即可。?/p>
(tng)18、用useBean标志初始化BEAN时如何接受初始化参数 (tng)
(tng)使用如下两标{֍可:(x) (tng)
(tng)<jsp:getProperty (tng)name="wenBean" (tng)property="someProperty"/> (tng)
(tng)<jsp:setProperty (tng)name="wenBean" (tng)property="someProperty" (tng)value="someValue"/> (tng)
(tng)19、用JSP如何获得客户览器的信息Q?br /> (tng)使用request.getHeader(String)卛_ (tng)
(tng)20、能象调用子E序一栯用JSP吗? (tng)
(tng)当然可以Q用<jsp:include (tng)page="relativeURL" (tng)flush="true"/> (tng)
(tng)21、当我重~译我的JSP使用的一个类后,Z么JVMl箋使用我的老CLASSQ?/p>
(tng)<%@include (tng)file="abc.jsp"%>?lt;jsp:include (tng)page="abc.jsp"/>之间的差别? (tng)
(tng)前一个ؓ(f)?rn)态包含,而后一个ؓ(f)动态包含?/p>
(tng)22、JSP的缺点? (tng)
(tng)1。对JAVAE序q行调试没有好东东?br /> (tng)2。因大多数的servlet引擎不支持connection (tng)pooling (tng)
(tng)3。Servlet引擎没有标准 (tng)
(tng)4。JSP与其它脚本语a的交互?/p>
(tng)23、JSP能进行递归调用吗? (tng)
(tng)当然可以,如对form的提交给本页 (tng)
(tng)34、如何实现JSP的国际化Q?br /> (tng)为各U版本提供resource (tng)bundles属性文件即可?/p>
(tng)25、在JSP中如何写文本文gQ?br /> (tng)使用PrintWriter对象Q如Q?br /> (tng)<%@ (tng)page (tng)import="java.io.*" (tng)%> (tng)
(tng)<% (tng)
(tng)String (tng)str (tng)= (tng)"print (tng)me"; (tng)
(tng)String (tng)nameOfTextFile (tng)= (tng)"/usr/anil/imp.txt"; (tng)
(tng)try (tng){ (tng)
(tng)PrintWriter (tng)pw (tng)= (tng)new (tng)PrintWriter(new (tng)FileOutputStream(nameOfTextFile)); (tng)
(tng)pw.println(str); (tng)
(tng)pw.close(); (tng)
(tng)} (tng)catch(IOException (tng)e) (tng){ (tng)
(tng)out.println(e.getMessage()); (tng)
(tng)} (tng)
(tng)%> (tng)
(tng)26、如何在JSP中包括绝对\径文Ӟ (tng)
(tng)使用URLConnection卛_。?/p>
(tng)27、在servlets和JSP之间能共享session对象吗? (tng)
(tng)当然可以Q?br /> (tng)HttpSession (tng)session (tng)= (tng)request.getSession(true); (tng)
(tng)session.putValue("variable","value"); (tng)
(tng)28、JavaScript的变量能复制到JSP的SESSION中吗Q?/p>
(tng)29、如何设|cookie在某一旉后过期? (tng)
(tng)用Cookie.setMaxAge(int) (tng)
(tng)30、如何获得当前的sessions敎ͼ (tng)
(tng)可以使用HttpSessionBindingListeners来跟t?/p>
(tng)31、能讄一些代码在我所有的JSP文g之上q行Q如果可以,能共享吗Q?br /> (tng)当然可以,可以Z的JSP文g定义一个别?/jsp/=ybwen.genius.myPreprocessingServlet,而以/jsp/为前~的文件可以用?/p>
(tng)32、对一个JSP,如果多个客户端同时请求它Q同步可能吗Q?br /> (tng)在jsp:useBean语法中用beanName有何好处Q?br /> (tng)beanName使用Beans.instantiate()初始化Bean (tng)
(tng)33、当我?lt;jsp:forward>Ӟ在浏览器的地址栏没有改变? (tng)
(tng)使用response.sendRedirect("newURL") (tng)
(tng)34、如何{换JSP (tng)0.9版本的文件到JSP1.1? (tng)
(tng)可用sed/awk卛_ (tng)
(tng)35、用JSP能设|HTML (tng)FORM中输入域的焦点,不用JavaScript? (tng)
(tng)没办法?/p>
(tng)36、用JSPq接到数据库q接~冲池的最好方法是什么? (tng)
(tng)1.使用JDBC2?中带有此服务的Driver (tng)
(tng)2.使用提供有此服务的Application (tng)server (tng)
(tng)3.自己?br />