JSP面试(经典)

  1.  1、如何混合使用Jsp和SSI #include? 
  2.  在JSP中可以使用如下方式包含纯HTML: 
  3.  <!--#include file="data.inc"--> 
  4.  但是如果data.inc中包含JSP CODE ,我们可以使用: 
  5.  <%@include file="data.inc"%> 
  6.  2、如何执行一个线程安全的JSP? 
  7.  只需增加如下指令 
  8.  <%@ page isThreadSafe="false" %> 
  9.  3、JSP如何处理HTML FORM中的数据? 
  10.  通过内置的request对象即可,如下: 
  11.  <% 
  12.  String item = request.getParameter("item"); 
  13.  int howMany = new Integer(request.getParameter("units")).intValue(); 
  14.  %> 
  15.  4、在JSP如何包含一个静态文件? 
  16.  静态包含如下:<%@ include file="copyright.html" %> 
  17.  动态包含如下:<jsp:include page="copyright.html" flush="true"/> 
  18.  5、在JSP中如何使用注释? 
  19.  主要有四中方法: 
  20.  1。<%-- 与 --%> 
  21.  2。// 
  22.  3。/**与**/ 
  23.  4。<!--与--> 
  24.  6、在JSP中如何执行浏览重定向? 
  25.  使用如下方式即可:response.sendRedirect("http://ybwen.home.chinaren.com/index.html"); 
  26.  也能物理地改变HTTP HEADER属性,如下: 
  27.  <% 
  28.  response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); 
  29.  String newLocn="/newpath/index.html"
  30.  response.setHeader("Location",newLocn); 
  31.  %> 
  32.  7、如何防止在JSP或SERVLET中的输出不被BROWSER保存在CACHE中? 
  33.  把如下脚本加入到JSP文件的开始即可: 
  34.  <% 
  35.  response.setHeader("Cache-Control","no-store"); //HTTP 1.1 
  36.  response.setHeader("Pragma","no-cache"); //HTTP 1.0 
  37.  response.setDateHeader ("Expires", 0); //prevents caching at the proxy server 
  38.  %> 
  39.  8、在JSP中如何设置COOKIE? 
  40.  COOKIE是作为HTTP HEADER的一部分被发送的,如下方法即可设置: 
  41.  <% 
  42.  Cookie mycookie = new Cookie("aName","aValue"); 
  43.  response.addCookie(mycookie); 
  44.  %> 
  45.  9、在JSP中如何删除一个COOKIE? 
  46.  <% 
  47.  Cookie killMyCookie = new Cookie("mycookie"null); 
  48.  killMyCookie.setMaxAge(0); 
  49.  killMyCookie.setPath("/"); 
  50.  response.addCookie(killMyCookie); 
  51.  %> 
  52.  10、在一个JSP的请求处理中如何停止JSP的执行 
  53.  如下例: 
  54.  <% 
  55.  if (request.getParameter("wen") != null) { 
  56.  // do something 
  57.  } else { 
  58.  return
  59.  } 
  60.  %> 
  61.  11、在JSP中如何定义方法 
  62.  你可以定义方法,但是你不能直接访问JSP的内置对象,而是通过参数的方法传递。如下: 
  63.  <%! 
  64.  public String howBadFrom(HttpServletRequest req) { 
  65.  HttpSession ses = req.getSession(); 
  66.  ... 
  67.  return req.getRemoteHost(); 
  68.  } 
  69.  %> 
  70.  <% 
  71.  out.print("in general,lao lee is not baddie "); 
  72.  %> 
  73.  <%= howBadFrom(request) %> 
  74.  12、如果BROWSER已关闭了COOKIES,在JSP中我如何打开SESSION来跟踪 
  75.  使用URL重写即可,如下: 
  76.  hello1.jsp 
  77.  <%@ page session="true" %> 
  78.  <% 
  79.  Integer num = new Integer(100); 
  80.  session.putValue("num",num); 
  81.  String url =response.encodeURL("hello2.jsp"); 
  82.  %> 
  83.  <a href=<%=url%>>hello2.jsp</a> 
  84.  hello2.jsp 
  85.  <%@ page session="true" %> 
  86.  <% 
  87.  Integer i= (Integer )session.getValue("num"); 
  88.  out.println("Num value in session is "+i.intValue()); 
  89.  %> 
  90.  13、在JSP中能发送EMAIL吗 
  91.  可以使用SUN的专用包:sun.net.smtp包。如下脚本使用SmtpClient类发送EMAIL。 
  92.  <%@ page import="sun.net.smtp.SmtpClient, java.io.*" %> 
  93.  <% 
  94.  String from="ybwen@sina.com"
  95.  String to="hewenjun@yeah.net, lei@who.com.cn"
  96.  try
  97.  SmtpClient client = new SmtpClient("mail.xxxxx.xxx"); 
  98.  client.from(from); 
  99.  client.to(to); 
  100.  PrintStream message = client.startMessage(); 
  101.  message.println("To: " + to); 
  102.  message.println("Subject: Sending email from JSP!"); 
  103.  message.println("This was sent from a JSP page!"); 
  104.  message.println(); 
  105.  message.println("Cool! :-)"); 
  106.  message.println(); 
  107.  message.println("Good Boy"); 
  108.  message.println("Im in genius.com"); 
  109.  message.println(); 
  110.  client.closeServer(); 
  111.  } 
  112.  catch (IOException e){ 
  113.  System.out.println("ERROR SENDING EMAIL:"+e); 
  114.  } 
  115.  %> 
  116.  14、在SERVLET中我能调用一个JSP错误页吗 
  117.  当然没问题,如下展示了如何在一个SERVLET控制逻辑单元内调用一个JSP错误页面。 
  118.  protected void sendErrorRedirect(HttpServletRequest request, 
  119.  HttpServletResponse response, String errorPageURL, 
  120.  Throwable e) 
  121.  throws ServletException, IOException { 
  122.  request.setAttribute ("javax.servlet.jsp.jspException", e); 
  123.  getServletConfig().getServletContext(). 
  124.  getRequestDispatcher(errorPageURL).forward(request, 
  125.  response); 
  126.  } 
  127.  public void doPost(HttpServletRequest request,HttpServletResponse response) { 
  128.  try { 
  129.  // do something 
  130.  } catch (Exception ex) { 
  131.  try { 
  132.  sendErrorRedirect(request,response,"/jsp/MyErrorPage.jsp",ex); 
  133.  } catch (Exception e) { 
  134.  e.printStackTrace(); 
  135.  } 
  136.  } 
  137.  } 
  138.  15、JSP和APPLET如何通讯 
  139.  JSP如何与EJB SessionBean通讯 
  140.  下面的代码段作了很好的示范 
  141.  <%@ page import="javax.naming.*, javax.rmi.PortableRemoteObject, 
  142.  foo.AccountHome, foo.Account" %> 
  143.  <%! 
  144.  //定义一个对SessionBeanHome接口实例的全局引用 
  145.  AccountHome accHome=null
  146.  public void jspInit() { 
  147.  //获得Home接口实例 
  148.  InitialContext cntxt = new InitialContext( ); 
  149.  Object ref= cntxt.lookup("java:comp/env/ejb/AccountEJB"); 
  150.  accHome = (AccountHome)PortableRemoteObject.narrow(ref,AccountHome.class); 
  151.  } 
  152.  %> 
  153.  <% 
  154.  //实例化SessionBean 
  155.  Account acct = accHome.create(); 
  156.  //调用远程方法 
  157.  acct.doWhatever(...); 
  158.  // 如此等等 
  159.  %> 
  160.  16、当我使用一个结果集时,如何防止字段为"null"的字域显示在我的HTML输入文本域中? 
  161.  可以定义一个简单的函数来达到目的,如下: 
  162.  <%! 
  163.  String blanknull(String s) { 
  164.  return (s == null) ? "" : s; 
  165.  } 
  166.  %> 
  167.  然后在JSP的FORM中,可以这样使用 
  168.  <input type="text" name="shoesize" value="<%=blanknull(shoesize)%>"
  169.  17、如何中SERVLET或JSP下载一个文件(如:binary,text,executable)? 
  170.  现提供两个解决方案: 
  171.  A:使用HTTP, 
  172.  B:在Servlet中,通过设置ContentType和使用java.io包的Stream等类可作到.例如: 
  173.  response.setContentType("application/x-msword"); 
  174.  然后想输出缓冲中写一些东东即可。 
  175.  18、使用useBean标志初始化BEAN时如何接受初始化参数 
  176.  使用如下两标签即可: 
  177.  <jsp:getProperty name="wenBean" property="someProperty"/> 
  178.  <jsp:setProperty name="wenBean" property="someProperty" value="someValue"/> 
  179.  19、使用JSP如何获得客户浏览器的信息? 
  180.  使用request.getHeader(String)即可 
  181.  20、能象调用子程序一样调用JSP吗? 
  182.  当然可以,用<jsp:include page="relativeURL" flush="true"/> 
  183.  21、当我重编译我的JSP使用的一个类后,为什么JVM继续使用我的老CLASS? 
  184.  <%@include file="abc.jsp"%>与<jsp:include page="abc.jsp"/>之间的差别? 
  185.  前一个为静态包含,而后一个为动态包含 
  186.  22、JSP的缺点? 
  187.  1。对JAVA程序进行调试没有好东东 
  188.  2。因大多数的servlet引擎不支持connection pooling 
  189.  3。Servlet引擎没有标准 
  190.  4。JSP与其它脚本语言的交互 
  191.  23、JSP能进行递归调用吗? 
  192.  当然可以,如对form的提交给本页 
  193.  34、如何实现JSP的国际化? 
  194.  为各种版本提供resource bundles属性文件即可 
  195.  25、在JSP中如何写文本文件? 
  196.  使用PrintWriter对象,如: 
  197.  <%@ page import="java.io.*" %> 
  198.  <% 
  199.  String str = "print me"
  200.  String nameOfTextFile = "/usr/anil/imp.txt"
  201.  try { 
  202.  PrintWriter pw = new PrintWriter(new FileOutputStream(nameOfTextFile)); 
  203.  pw.println(str); 
  204.  pw.close(); 
  205.  } catch(IOException e) { 
  206.  out.println(e.getMessage()); 
  207.  } 
  208.  %> 
  209.  26、如何在JSP中包括绝对路径文件? 
  210.  使用URLConnection即可。 
  211.  27、在servlets和JSP之间能共享session对象吗? 
  212.  当然可以, 
  213.  HttpSession session = request.getSession(true); 
  214.  session.putValue("variable","value"); 
  215.  28、JavaScript的变量能复制到JSP的SESSION中吗? 
  216.  29、如何设置cookie在某一时间后过期? 
  217.  用Cookie.setMaxAge(int
  218.  30、如何获得当前的sessions数? 
  219.  可以使用HttpSessionBindingListeners来跟踪 
  220.  31、能设置一些代码在我所有的JSP文件之上运行?如果可以,能共享吗? 
  221.  当然可以,可以为你的JSP文件定义一个别名:/jsp/=ybwen.genius.myPreprocessingServlet,而以/jsp/为前缀的文件可以使用 
  222.  32、对一个JSP页,如果多个客户端同时请求它,同步可能吗? 
  223.  在jsp:useBean语法中使用beanName有何好处? 
  224.  beanName使用Beans.instantiate()初始化Bean 
  225.  33、当我使用<jsp:forward>时,在浏览器的地址栏没有改变? 
  226.  使用response.sendRedirect("newURL"
  227.  34、如何转换JSP 0.9版本的文件到JSP1.1? 
  228.  可使用sed/awk即可 
  229.  35、使用JSP能设置HTML FORM中输入域的焦点,不用JavaScript? 
  230.  没办法 
  231.  36、使用JSP连接到数据库连接缓冲池的最好方法是什么? 
  232.  1.使用JDBC2。0中带有此服务的Driver 
  233.  2.使用提供有此服务的Application server 
  234.  3.自己写
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值