您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页Jsp常见问题

Jsp常见问题

来源:意榕旅游网


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方法相当于的作用。类似于方法调用,当执行到这行代码的时候,通过forward方法转向执行目标文件,把request和response作为参数传递到下一个页面,这样当前页面(Servlet或者JSP)和目标页面共享了request,可以通过request对象传值。response的sendRedirect方法相当于向客户端浏览器发送了一个消息,让浏览器重新请求目标文件,从用户的角度来说,相当于发送了两次请求,每次请求有独立的request和response对象,不能通过request在两个页面之间传值。从地址栏看,前一种方式在地址栏中显示的第一个文件的路径,后一种方式显示的第二个文件的路径。

12、 在Servlet中如何获取Session对象,如何获取Cookie 使用request对象的getSession方法获取session,通过getCookies获取Cookie 13、 Servlet在哪个文件中进行配置? 在Web应用的WEB-INF下面的web.xml中进行配置。 14、 如何配置Servlet

包括两步:Servlet的声明和Servlet访问方式的声明。 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

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、当我使用时,在浏览器的地址栏没有改变? 使用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 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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务