jspServlet相关总结


1jsp有哪些内置对象作用分别是什么


:JSP共有以下9种基本内置组件(可与ASP6种内部组件相对应):


    request 用户端请求,此请求会包含来自GET/POST请求的参数


    response 网页传回用户端的回应


pageContext 网页的属性是在这里管理


session 与请求有关的会话期


applicationservlet 正在执行的内容


    out 用来传送回应的输出


    config servlet的构架部件


    page JSP网页本身


    exception 针对错误网页,未捕捉的例外


2jsp有哪些动作作用分别是什么


:JSP共有以下6种基本动作


   jsp:include:在页面被请求的时候引入一个文件。


   jsp:useBean:寻找或者实例化一个JavaBean


   jsp:setProperty:设置JavaBean的属性。


   jsp:getProperty:输出某个JavaBean的属性。


   jsp:forward:把请求转到一个新的页面。


   jsp:plugin:根据浏览器类型为Java插件生成OBJECTEMBED标记


3JSP中动态INCLUDE与静态INCLUDE的区别?


答:动态INCLUDEjsp:include动作实现


它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数


静态INCLUDEinclude伪码实现,定不会检查所含文件的变化,适用于包含静态页面


4、两种跳转方式分别是什么有什么区别


答:有两种,分别为:


前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数.后者完全转向新页面,不会再回来。相当于goto 语句。


57JSP的内置对象及方法。


    request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取        cookie, header, session数据的有用的方法。


   response表示HttpServletResponse对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)


   out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。


   pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。


   session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息


   applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息


   config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。


   page表示从该页面产生的一个servlet实例


二、JSP&Servlet技术


1. 描述JSPServlet的区别、共同点、各自应用的范围


2. Web开发中需要处理HTML标记时,应做什么样的处理,要筛选那些字符(< > & “”)


3. JSP中如何读取客户端的请求,如何访问CGI变量,如何确定某个Jsp文件的真实路径。


4. 描述CookieSession的作用,区别和各自的应用范围,Session工作原理。


5. 列出Jsp中包含外部文件的方式,两者有何区别。


6. 说明JsperrorPage的作用,应用范围。


7. 介绍在Jsp中如何使用JavaBeans


8. 简单介绍JSP的标记库


9. JspServlet中的请求转发分别如何实现。


59JSP的常用指令


    isErrorPage(是否能使用Exception对象)isELIgnored(是否忽略表达式)


60、什么情况下调用doGet()doPost()


    Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()


61servlet的生命周期


    web容器加载servlet,生命周期开始。通过调用servletinit()方法进行servlet的初始化。通过调用service()方法实现,根据请求的不同调用不同的do***()方法。结束服务,web容器调用servletdestroy()方法。


62、如何现实servlet的单线程模式


63、页面间对象传递的方法requestsessionapplicationcookie


64JSPServlet有哪些相同点和不同点,他们之间的联系是什么?


    JspServlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"servlet"ServletJSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是JavaHTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。


65、四种会话跟踪技术


会话作用域ServletsJSP 页面描述


    page否是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括servlet 又包括被编译成 servlet JSP 页面


    request是是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)


    session是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求


    application是是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域


66Request对象的主要方法:


setAttribute(Stringname,Object):设置名字为namerequest的参数值


getAttribute(Stringname):返回由name指定的属性值


getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例


getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组


getCharacterEncoding():返回请求中的字符编码方式


getContentLength():返回请求的Body的长度


getHeader(Stringname):获得HTTP协议定义的文件头信息


getHeaders(Stringname):返回指定名字的request Header的所有值,结果是一个枚举的实例


getHeaderNames():返回所以request Header的名字,结果是一个枚举的实例


getInputStream():返回请求的输入流,用于获得请求中的数据


getMethod():获得客户端向服务器端传送数据的方法


getParameter(Stringname):获得客户端传送给服务器端的有name指定的参数值


getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例


getParameterValues(Stringname):获得有name指定的参数的所有值


getProtocol():获取客户端向服务器端传送数据所依据的协议名称


getQueryString():获得查询字符串


getRequestURI():获取发出请求字符串的客户端地址


getRemoteAddr():获取客户端的IP地址


getRemoteHost():获取客户端的名字


getSession([Booleancreate]):返回和请求相关Session


getServerName():获取服务器的名字


getServletPath():获取客户端所请求的脚本文件的路径


getServerPort():获取服务器的端口号


removeAttribute(Stringname):删除请求中的一个属性


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


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


68Servlet执行时一般实现哪几个方法?


public voidinit(ServletConfig config)


publicServletConfig getServletConfig()


public StringgetServletInfo()


public voidservice(ServletRequest request,ServletResponse response)


public voiddestroy()JSP


1、如何混合使用JspSSI #include?


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


<!--#includefile="data.inc"-->


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


<%@includefile="data.inc"%>


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


只需增加如下指令


<%@ pageisThreadSafe="false" %>


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


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


<%


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


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


%>


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


静态包含如下:<%@include file="copyright.html" %>


动态包含如下:<jsp:includepage="copyright.html" flush="true"/>


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


StringnewLocn="/newpath/index.html";


response.setHeader("Location",newLocn);


%>


7、如何防止在JSPSERVLET中的输出不被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


%>


8、在JSP中如何设置COOKIE?


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


<%


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


response.addCookie(mycookie);


%>


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


<%


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


killMyCookie.setMaxAge(0);


killMyCookie.setPath("/");


response.addCookie(killMyCookie);


%>


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


如下例:


<%


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


// dosomething


} else {


return;


}


%>


11、在JSP中如何定义方法


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


<%!


public StringhowBadFrom(HttpServletRequest req) {


HttpSessionses = req.getSession();


...


returnreq.getRemoteHost();


}


%>


<%


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


%>


<%=howBadFrom(request) %>


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


使用URL重写即可,如下:


hello1.jsp


<%@ pagesession="true" %>


<%


Integer num =new Integer(100);


session.putValue("num",num);


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


%>


<ahref=<%=url%>>hello2.jsp</a> hello2.jsp


<%@ pagesession="true" %>


<%


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


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


%>


13、在JSP中能发送EMAIL


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


<%@ pageimport="sun.net.smtp.SmtpClient, java.io.*" %>


<%


Stringfrom="ybwen@sina.com";


Stringto="hewenjun@yeah.net, lei@who.com.cn";


try{


SmtpClientclient = new SmtpClient("mail.xxxxx.xxx");


client.from(from);


client.to(to);


PrintStreammessage = client.startMessage();


message.println("To:" + to);


message.println("Subject:Sending email from JSP!");


message.println("Thiswas sent from a JSP page!");


message.println();


message.println("Cool!:-)");


message.println();


message.println("GoodBoy");


message.println("Im in genius.com");


message.println();


client.closeServer();


}


catch(IOException e){


System.out.println("ERRORSENDING EMAIL:"+e);


}


%>


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


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


protectedvoid sendErrorRedirect(HttpServletRequest request,


HttpServletResponseresponse, String errorPageURL,


Throwable e)


throwsServletException, IOException {


request.setAttribute("javax.servlet.jsp.jspException", e);


getServletConfig().getServletContext().


getRequestDispatcher(errorPageURL).forward(request,


response);


} public voiddoPost(HttpServletRequest request,HttpServletResponse response) {


try {


// dosomething


} catch (Exceptionex) {


try {


sendErrorRedirect(request,response,"/jsp/MyErrorPage.jsp",ex);


} catch(Exception e) {


e.printStackTrace();


}


}


}


15JSPAPPLET如何通讯


        JSP如何与EJB SessionBean通讯


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


<%@ pageimport="javax.naming.*, javax.rmi.PortableRemoteObject,


foo.AccountHome,foo.Account" %>


<%!


//定义一个对SessionBeanHome接口实例的全局引用


AccountHomeaccHome=null; public void jspInit() {


//获得Home接口实例


InitialContextcntxt = 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输入文本域中?


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


<%!


Stringblanknull(String s) {


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


}


%> 然后在JSPFORM中,可以这样使用


<inputtype="text" name="shoesize"value="<%=blanknull(shoesize)%>">


17、如何中SERVLETJSP下载一个文件(如:binary,text,executable)


现提供两个解决方案:


A:使用HTTP


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


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


然后想输出缓冲中写一些东东即可。 18、使用useBean标志初始化BEAN时如何接受初始化参数


使用如下两标签即可:


<jsp:getPropertyname="wenBean" property="someProperty"/>


<jsp:setPropertyname="wenBean" property="someProperty"value="someValue"/> 19、使用JSP如何获得客户浏览器的信息?


使用request.getHeader(String)即可


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


当然可以,用<jsp:includepage="relativeURL" flush="true"/>


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


<%@includefile="abc.jsp"%><jsp:includepage="abc.jsp"/>之间的差别?


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


22JSP的缺点?


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


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


3Servlet引擎没有标准


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


23JSP能进行递归调用吗?


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


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


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


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


使用PrintWriter对象,如:


<%@ pageimport="java.io.*" %>


<%


String str ="print me";


StringnameOfTextFile = "/usr/anil/imp.txt";


try {


PrintWriterpw = new PrintWriter(new FileOutputStream(nameOfTextFile));


pw.println(str);


pw.close();


}catch(IOException e) {


out.println(e.getMessage());


}


%>


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


使用URLConnection即可。


27、在servletsJSP之间能共享session对象吗?


当然可以,


HttpSessionsession = request.getSession(true);


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


28JavaScript的变量能复制到JSPSESSION中吗?


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


Cookie.setMaxAge(int)


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


可以使用HttpSessionBindingListeners来跟踪


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


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


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


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


使用response.sendRedirect("newURL")


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


可使用sed/awk即可


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


没办法


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


1.使用JDBC20中带有此服务的Driver


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


3.自己写