this is a extra element for clear the floated element
JSP中可能会碰到的问题解答
  • 12/31
  • 2008
Servlet/JSP | Java 1894 次查看
  1、如何混合使用Jsp和SSI #include?

  在JSP中可以使用如下方式包含纯HTML:

  &lt !--#include file="data.inc"-- &gt

  但是如果data.inc中包含JSP CODE ,我们可以使用:

  &lt %@include file="data.inc"% &gt

  2、如何执行一个线程安全的JSP?

  只需增加如下指令

  &lt %@ page isThreadSafe="false" % &gt

  3、JSP如何处理HTML FORM中的数据?

  通过内置的request对象即可,如下:

  &lt %

  String item = request.getParameter("item");

  int howMany = new Integer(request.getParameter("units")).intValue();

  % &gt

  4、在JSP如何包含一个静态文件?

  静态包含如下:&lt %@ include file="copyright.html" % &gt

  动态包含如下:&lt jsp:include page="copyright.html" flush="true"/ &gt

  5、在JSP中如何使用注释?

  主要有四中方法:

  1。&lt %-- 与 --% &gt

  2。//

  3。/**与**/

  4。&lt !--与-- &gt

  6、在JSP中如何执行浏览重定向?

  使用如下方式即可:response.sendRedirect("http://ybwen.home.chinaren.com/index.html");

  也能物理地改变HTTP HEADER属性,如下:

  &lt %

  response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);

  String newLocn="/newpath/index.html";

  response.setHeader("Location",newLocn);

  % &gt

  7、如何防止在JSP或SERVLET中的输出不被BROWSER保存在CACHE中?

  把如下脚本加入到JSP文件的开始即可:

  &lt %

  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

  % &gt

  8、在JSP中如何设置COOKIE?

  COOKIE是作为HTTP HEADER的一部分被发送的,如下方法即可设置:

  &lt %

  Cookie mycookie = new Cookie("aName","aValue");

  response.addCookie(mycookie);

  % &gt

  9、在JSP中如何删除一个COOKIE?

  &lt %

  Cookie killMyCookie = new Cookie("mycookie", null);

  killMyCookie.setMaxAge(0);

  killMyCookie.setPath("/");

  response.addCookie(killMyCookie);

  % &gt

  10、在一个JSP的请求处理中如何停止JSP的执行

  如下例:

  &lt %

  if (request.getParameter("wen") != null) {

  // do something

  } else {

  return;

  }

  % &gt

  11、在JSP中如何定义方法

  你可以定义方法,但是你不能直接访问JSP的内置对象,而是通过参数的方法传递。如下:

  &lt %!

  public String howBadFrom(HttpServletRequest req) {

  HttpSession ses = req.getSession();

  ...

  return req.getRemoteHost();

  }

  % &gt

  &lt %

  out.print("in general,lao lee is not baddie ");

  % &gt

  &lt %= howBadFrom(request) % &gt

  12、如果BROWSER已关闭了COOKIES,在JSP中我如何打开SESSION来跟踪

  使用URL重写即可,如下:

  hello1.jsp

  &lt %@ page session="true" % &gt

  &lt %

  Integer num = new Integer(100);

  session.putValue("num",num);

  String url =response.encodeURL("hello2.jsp");

  % &gt

  &lt a href=&lt %=url% &gt &gthello2.jsp&lt /a &gt

  hello2.jsp

  &lt %@ page session="true" % &gt

  &lt %

  Integer i= (Integer )session.getValue("num");

  out.println("Num value in session is "+i.intValue());

  % &gt

  13、在JSP中能发送EMAIL吗

  可以使用SUN的专用包:sun.net.smtp包。如下脚本使用SmtpClient类发送EMAIL。

  &lt %@ page import="sun.net.smtp.SmtpClient, java.io.*" % &gt

  &lt %

  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);

  }

  % &gt

  14、在SERVLET中我能调用一个JSP错误页吗

  当然没问题,如下展示了如何在一个SERVLET控制逻辑单元内调用一个JSP错误页面。

  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通讯

  下面的代码段作了很好的示范

  &lt %@ page import="javax.naming.*, javax.rmi.PortableRemoteObject,

  foo.AccountHome, foo.Account" % &gt

  &lt %!

  //定义一个对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);

  }

  % &gt

  &lt %

  //实例化SessionBean

  Account acct = accHome.create();

  //调用远程方法

  acct.doWhatever(...);

  // 如此等等

  % &gt

  16、当我使用一个结果集时,如何防止字段为"null"的字域显示在我的HTML输入文本域中?

  可以定义一个简单的函数来达到目的,如下:

  &lt %!

  String blanknull(String s) {

  return (s == null) ? "" : s;

  }

  % &gt

  然后在JSP的FORM中,可以这样使用

  &lt input type="text" name="shoesize" value="&lt %=blanknull(shoesize)% &gt" &gt

  17、如何中SERVLET或JSP下载一个文件(如:binary,text,executable)?

  现提供两个解决方案:

  A:使用HTTP,

  B:在Servlet中,通过设置ContentType和使用java.io包的Stream等类可作到.例如:

  response.setContentType("application/x-msword");

  然后想输出缓冲中写一些东东即可。

  18、使用useBean标志初始化BEAN时如何接受初始化参数

  使用如下两标签即可:

  &lt jsp:getProperty name="wenBean" property="someProperty"/ &gt

  &lt jsp:setProperty name="wenBean" property="someProperty" value="someValue"/ &gt

  19、使用JSP如何获得客户浏览器的信息?

  使用request.getHeader(String)即可

  20、能象调用子程序一样调用JSP吗?

  当然可以,用&lt jsp:include page="relativeURL" flush="true"/ &gt

  21、当我重编译我的JSP使用的一个类后,为什么JVM继续使用我的老CLASS?

  &lt %@include file="abc.jsp"% &gt与&lt jsp:include page="abc.jsp"/ &gt之间的差别?

  前一个为静态包含,而后一个为动态包含

  22、JSP的缺点?

  1。对JAVA程序进行调试没有好东东

  2。因大多数的servlet引擎不支持connection pooling

  3。Servlet引擎没有标准

  4。JSP与其它脚本语言的交互

  23、JSP能进行递归调用吗?

  当然可以,如对form的提交给本页

  34、如何实现JSP的国际化?

  为各种版本提供resource bundles属性文件即可

  25、在JSP中如何写文本文件?

  使用PrintWriter对象,如:

  &lt %@ page import="java.io.*" % &gt

  &lt %

  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());

  }

  % &gt

  26、如何在JSP中包括绝对路径文件?

  使用URLConnection即可。

  27、在servlets和JSP之间能共享session对象吗?

  当然可以,

  HttpSession session = request.getSession(true);

  session.putValue("variable","value");

  28、JavaScript的变量能复制到JSP的SESSION中吗?

  29、如何设置cookie在某一时间后过期?

  用Cookie.setMaxAge(int)

  30、如何获得当前的sessions数?

  可以使用HttpSessionBindingListeners来跟踪

  31、能设置一些代码在我所有的JSP文件之上运行?如果可以,能共享吗?

  当然可以,可以为你的JSP文件定义一个别名:/jsp/=ybwen.genius.myPreprocessingServlet,而以/jsp/为前缀的文件可以使用

  32、对一个JSP页,如果多个客户端同时请求它,同步可能吗?

  在jsp:useBean语法中使用beanName有何好处?

  beanName使用Beans.instantiate()初始化Bean

  33、当我使用&lt jsp:forward &gt时,在浏览器的地址栏没有改变?

  使用response.sendRedirect("newURL")

  34、如何转换JSP 0.9版本的文件到JSP1.1?

  可使用sed/awk即可

  35、使用JSP能设置HTML FORM中输入域的焦点,不用JavaScript?

  没办法

  36、使用JSP连接到数据库连接缓冲池的最好方法是什么?

  1。使用JDBC2。0中带有此服务的Driver

  2.使用提供有此服务的Application server