6、在JSP中如何执行浏览重定向? 使
用
如
下
方
式
即
可
:
response.sendRedirect(”http://ybwen.home.chinaren.com/index.html”); 也能物理地改变HTTP HEADER属性,如下:
7、如何防止在JSP或SERVLET中的输出不被BROWSER保存在CACHE中? 把如下脚本加入到JSP文件的开始即可: 8、在JSP中如何设置COOKIE?
COOKIE是作为HTTP HEADER的一部分被发送的,如下方法即可设置: 9、在JSP中如何删除一个COOKIE?
10、在一个JSP的请求处理中如何停止JSP的执行 如下例:
11、在JSP中如何定义方法
你可以定义方法,但是你不能直接访问JSP的内置对象,而是通过参数的方法传递。如下: 12、如果BROWSER已关闭了COOKIES,在JSP中我如何打开SESSION来跟踪 使用URL重写即可,如下: hello1.jsp hello2.jsp hello2.jsp
13、在JSP中能发送EMAIL吗
可以使用SUN的专用包:sun.net.smtp包。如下脚本使用SmtpClient类发送EMAIL。 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 requestHttpServletResponse response) { try {
// do something } catch (Exception ex) { try {
sendErrorRedirect(requestresponse”/jsp/MyErrorPage.jsp”ex);
} catch (Exception e) { e.printStackTrace(); } } }
15、JSP和applet如何通讯 JSP如何与EJB SessionBean通讯 下面的代码段作了很好的示范
16、当我使用一个结果集时,如何防止字段为”null”的字域显示在我的HTML输入文本域中? 可以定义一个简单的函数来达到目的,如下: 然后在JSP的FORM中,可以这样使用
17、如何中SERVLET或JSP下载一个文件(如:binarytextexecutable)? 现提供两个解决方案: 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? 与之间的差别?
前一个为静态包含,而后一个为动态包含 22、JSP的缺点?
1。对JAVA程序进行调试没有好东东
2。因大多数的servlet引擎不支持connection pooling 3。Servlet引擎没有标准 4。JSP与其它脚本语言的交互 23、JSP能进行递归调用吗? 当然可以如对form的提交给本页 34、如何实现JSP的国际化?
为各种版本提供resource bundles属性文件即可 25、在JSP中如何写文本文件? 使用PrintWriter对象,如:
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.自己写
25/在servlets和JSP之间能共享session对象吗? 当然可以,
HttpSession session = request.getSession(true); session.putValue(”variable”,”value”); 26/在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()); } %>
27/JSP的缺点?
1.对JAVA程序进行调试没有好东东
2.因大多数的servlet引擎不支持connection pooling 3.Servlet引擎没有标准 4.JSP与其它脚本语言的交互
28/如何中SERVLET或JSP下载一个文件(如:binary,text,executable)? 现提供两个解决方案: A:使用HTTP,
B:在Servlet中,通过设置ContentType和使用java.io包的Stream等类可作到.例如: response.setContentType(”application/x-msword”); 然后想输出缓冲中写一些东东即可。
29/如何防止在JSP或SERVLET中的输出不被BROWSER保存在CACHE中? 把如下脚本加入到JSP文件的开始即可: <%
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 %>
30/Servlet执行时一般实现哪几个方法? public void init(ServletConfig config) public ServletConfig getServletConfig() public String getServletInfo()
public void service(ServletRequest request,ServletResponse response) public void destroy() 31/Request对象的主要方法
setAttribute(String name,Object):设置名字为name的request的参数值 getAttribute(String name):返回由name指定的属性值
getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例 getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组
getCharacterEncoding():返回请求中的字符编码方式 getContentLength():返回请求的Body的长度
getHeader(String name):获得HTTP协议定义的文件头信息
getHeaders(String name):返回指定名字的request Header的所有值,结果是一个枚举的实例 getHeaderNames():返回所以request Header的名字,结果是一个枚举的实例 getInputStream():返回请求的输入流,用于获得请求中的数据 getMethod():获得客户端向服务器端传送数据的方法
getParameter(String name):获得客户端传送给服务器端的有name指定的参数值
getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例
getParameterValues(String name):获得有name指定的参数的所有值 getProtocol():获取客户端向服务器端传送数据所依据的协议名称 getQueryString():获得查询字符串
getRequestURI():获取发出请求字符串的客户端地址 getRemoteAddr():获取客户端的IP地址 getRemoteHost():获取客户端的名字
getSession([Boolean create]):返回和请求相关Session getServerName():获取服务器的名字
getServletPath():获取客户端所请求的脚本文件的路径 getServerPort():获取服务器的端口号
removeAttribute(String name):删除请求中的一个属性 32JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是”类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。 33/如何现实servlet的单线程模式 <%@ page isThreadSafe=”false”%>
34/说出Servlet的生命周期,并说出Servlet和CGI的区别。
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
35/用ServletRequest和ServletContext调用ReqestDispatcher有什么区别?
在用ServletRequest调用RequestDispatcher的时候可以用相对URL, 但是ServletContext
不行。
36/当容器调用servlet的destory()方法的时候,servlet会马上销毁么? 如果当时这个servlet正在执
行其他任务或者线程呢?
是的, 当容器调用servlet的destory()方法的时候,servlet会马上销毁,但是容器在调用destory()方法之前,会等servlet的service()方法结束剩余的任务。 37/我们没有写servlet的构造方法,那么容器是怎么创建servlet的实例呢? 容器会自动为
Servlet
写一个无参的构造方法,容器是用
Class.forName(className).newInstance()来创建servlet的实例的。 38/Servlet的实例是在生命周期什么时候创建的? 配置servlet最重要的是什么?
Servlet实例是在servlet第一次在容器中被加载的是时候创建的, Init()方法是用来配置这个servlet实力的, 这个方法在servlet的生命周期中只被调用一次,所以应该把所有servlet生命周期中的配置 39/Servlet的生命周期?
Servlet是一种可以 在Servlet容器中运行的组件,那么理所当然就应该有一个从创建到销毁的过程,这个过程我们可以称之为Servlet生命周期。Servlet的生命 周期可以分为加载、实例化、初始化、处理客户请求和卸载五个阶段,体现在方法上主要是init()、service()和destroy()三个方法。生 命周期的具体说明如下:
Servlet容器完成加载Servlet类和实例化一个Servlet对象 init()方法完成初始化工作,该方法由Servlet容器调用完成 service()方法处理客户端请求,并返回响应结果
destroy()方法在Servlet容器卸载Servlet之前被调用,释放一些资源