jsp常见问题
1、 Servlet与JSP有什么区别?
Servlet和JSP完成的功能是相同的,都可以接收用户的请求,可以对用户进行响应,可以调用业务方法。
不同点在于JSP是在html或者xml中嵌入了Java代码或者JSP的标记,在制作页面方面具有优势,可以使用网页编辑工具来制作网页,然后嵌入Java或者JSP的标记。Servlet是纯Java代码,通常用于控制,不用于输出。在MVC模式中,JSP通常充当视图,Servlet通常充当控制器。另外,JSP在运行的时候还要转换成类似于Servlet的Java代码。 2、 Servelt通常有哪些方法 init方法,完成初始化 service方法,包括doGet和doPost,用于接收用户的请求,调用后台的JavaBean或者EJB,选择界面对用户响应。 destroy方法,用于释放资源 3、 谈谈Servlet的生命周期
当接收到请求的时候,容器察看对应的Servlet对象是否存在,如果不存在,需要加载Servetl,实例化Servlet,调用init方法进行初始化。如果已经存在,根据用户的请求创建request和response对象,把这两个对象作为参数调用Servlet对象的service方法,Servlet通过这个方法与用户进行交互,方法执行完之后,对请求的处理结束。Servelt对象继续等待下一个请求。当应用卸载的时候,调用destroy方法释放资源。多个请求共享Servelt对象。 4、 Servlet API的两个主要包 javax.servlet.*;
javax.servlet.http.*;
5、 编写Servlet需要继承的类是什么? HttpServlet
6、 编写Servlet通常需要实现的两个方法是什么? doGet方法和doPost方法
7、 doGet方法和doPost方法中的两个参数是什么?
HttpServletRequest和HttpServletResponse,前者封装了与请求相关的信息,后者封装了与响应相关的信息。要获取请求信息,从第一个参数获取,要对用户响应,通过第二个参数。
8、 要获取用户信息,如何获取
request的getParameter方法和getParameterValues方法,前者用于获取单值表单元素的值,或者用于获取多值的情况,典型的复选框。前者返回的是一个字符串,后者返回的是字符串数组。如果参数指定的表单元素不存在,返回null。 9、 要给用户响应信息,如何完成? 设置响应内容的类型:
response.setContentType(“text/html;charset=gb2312”); 获取输出流对象:PrintWriter out = response.getWriter(); 输出信息:通过out的println方法
10、 在Servlet中选择接面对用户响应,如何实现
两种方式:使用RequestDispatcher和response的sendRedirect方法 如果使用RequestDispatcher:
RequestDispatcher rd = request,getRequestDispatcher(“目标文件”); rd.forward(request,response); 如果使用sendRedirect方法
response.sendRedirect(“目标文件”); 11、 上面的两种方式有什么区别?
RequestDispatcher的forward方法相当于 12、 在Servlet中如何获取Session对象,如何获取Cookie 使用request对象的getSession方法获取session,通过getCookies获取Cookie 13、 Servlet在哪个文件中进行配置? 在Web应用的WEB-INF下面的web.xml中进行配置。 14、 如何配置Servlet 包括两步:Servlet的声明和Servlet访问方式的声明。 Servlet的声明: Servlet访问方式的声明 15、 编译好的Servlet类放在什么位置? 放在Web应用WEB-INF下面的classes文件夹中。 16、 假设网站的IP地址为1.2.3.4,端口8878,应用的名字hello,servlet的访问方式/hello,现在要访问这个servlet,如何访问? http://1.2.3.4:8878/hello/hello 17、 谈谈Servlet过滤器的作用? Servlet是特殊的Servlet,能够对特定的请求路径进行过滤,在访问这个路径之前,先执行过滤器,过滤器进行预处理,过滤器决定是否继续执行后续的文件。典型的应用,可以把用户验证的代码写在过滤器中,然后把过滤的路径配制成需要验证的文件的路径。 18、 谈谈Servlet监听器的作用 Servlet监听器对特定的事件进行监听,当产生这些事件的时候,会执行监听器 的代码。可以对应用的加载、卸载,对session的初始化、销毁,对session中值变化等事件进行监听 查看文章 jsp常见问题2007年05月13日 星期日 17:331、如何混合使用Jsp和SSI #include? 在JSP中可以使用如下方式包含纯HTML: 但是如果data.inc中包含JSP CODE ,我们可以使用: <%@include file=\"data.inc\"%> 2、如何执行一个线程安全的JSP? 只需增加如下指令 <%@ page isThreadSafe=\"false\" %> 3、JSP如何处理HTML FORM中的数据? 通过内置的request对象即可,如下: <% String item = request.getParameter(\"item\"); int howMany = new Integer(request.getParameter(\"units\")).intValue(); %> 4、在JSP如何包含一个静态文件? 静态包含如下:<%@ include file=\"copyright.html\" %> 动态包含如下: 5、在JSP中如何使用注释? 主要有四中方法: 1。<%-- 与 --%> 2。// 3。/** *//**与**/ 4。 6、在JSP中如何执行浏览重定向? 使用如下方式即可:response.sendRedirect(\"http://ybwen.home.chinaren.com/index.html\"); 也能物理地改变HTTP HEADER属性,如下: <% response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); String newLocn=\"/newpath/index.html\"; response.setHeader(\"Location\ %> 7、如何防止在JSP或SERVLET中的输出不被BROWSER保存在CACHE中? 把如下脚本加入到JSP文件的开始即可: <% response.setHeader(\"Cache-Control\response.setHeader(\"Pragma\ response.setDateHeader (\"Expires\%> 8、在JSP中如何设置COOKIE? COOKIE是作为HTTP HEADER的一部分被发送的,如下方法即可设置: <% Cookie mycookie = new Cookie(\"aName\response.addCookie(mycookie); %> 9、在JSP中如何删除一个COOKIE? <% Cookie killMyCookie = new Cookie(\"mycookie\killMyCookie.setMaxAge(0); killMyCookie.setPath(\"/\"); response.addCookie(killMyCookie); %> 10、在一个JSP的请求处理中如何停止JSP的执行 如下例: <% if (request.getParameter(\"wen\") != null) ...{ // do something } else ...{ return; } %> 11、在JSP中如何定义方法 你可以定义方法,但是你不能直接访问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,在JSP中我如何打开SESSION来跟踪 使用URL重写即可,如下: hello1.jsp <%@ page session=\"true\" %> <% Integer num = new Integer(100); session.putValue(\"num\ String url =response.encodeURL(\"hello2.jsp\"); %> hello2.jsp <%@ page session=\"true\" %> <% Integer i= (Integer )session.getValue(\"num\"); out.println(\"Num value in session is \"+i.intValue()); %> 13、在JSP中能发送EMAIL吗 可以使用SUN的专用包:sun.net.smtp包。如下脚本使用SmtpClient类发送EMAIL。 <%@ 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(\"I''m in genius.com\"); message.println(); client.closeServer(); } catch (IOException e)...{ System.out.println(\"ERROR SENDING EMAIL:\"+e); } %> 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\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\} catch (Exception e) ...{ e.printStackTrace(); } } } 15、JSP和APPLET如何通讯 JSP如何与EJB SessionBean通讯 下面的代码段作了很好的示范 <%@ 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(); //调用远程方法 acct.doWhatever(...); // 如此等等 %> 16、当我使用一个结果集时,如何防止字段为\"null\"的字域显示在我的HTML输入文本域中? 可以定义一个简单的函数来达到目的,如下: <%! String blanknull(String s) ...{ return (s == null) ? \"\" : s; } %> 然后在JSP的FORM中,可以这样使用 \"> 17、如何中SERVLET或JSP下载一个文件(如:binary,text,executable)? 现提供两个解决方案: A:使用HTTP, B:在Servlet中,通过设置ContentType和使用java.io包的Stream等类可作到.例如: response.setContentType(\"application/x-msword\"); 然后想输出缓冲中写一些东东即可。 18、使用useBean标志初始化BEAN时如何接受初始化参数 使用如下两标签即可: 19、使用JSP如何获得客户浏览器的信息? 使用request.getHeader(String)即可 20、能象调用子程序一样调用JSP吗? 当然可以,用 21、当我重编译我的JSP使用的一个类后,为什么JVM继续使用我的老CLASS? <%@include file=\"abc.jsp\"%>与 22、JSP的缺点? 1。对JAVA程序进行调试没有好东东 2。因大多数的servlet引擎不支持connection pooling 3。Servlet引擎没有标准 4。JSP与其它脚本语言的交互 23、JSP能进行递归调用吗? 当然可以,如对form的提交给本页 34、如何实现JSP的国际化? 为各种版本提供resource bundles属性文件即可 25、在JSP中如何写文本文件? 使用PrintWriter对象,如: <%@ 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即可。 27、在servlets和JSP之间能共享session对象吗? 当然可以, HttpSession session = request.getSession(true); session.putValue(\"variable\ 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、当我使用 34、如何转换JSP 0.9版本的文件到JSP1.1? 可使用sed/awk即可 35、使用JSP能设置HTML FORM中输入域的焦点,不用javascript? 没办法 36、使用JSP连接到数据库连接缓冲池的最好方法是什么? 1。使用JDBC2。0中带有此服务的Driver 2.使用提供有此服务的Application server 3.自己写 本文来自CSDN博客,转载请http://blog.csdn.net/kt400_hhx/archive/2007/05/31/1633316.aspx 标明出处: 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务