<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IT公司面试手册 &#187; Servlet</title>
	<atom:link href="http://www.mianwww.com/html/category/it-interview/servlet/feed" rel="self" type="application/rss+xml" />
	<link>http://www.mianwww.com</link>
	<description></description>
	<lastBuildDate>Wed, 08 Feb 2012 11:48:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Jsp&amp;servlet面试题</title>
		<link>http://www.mianwww.com/html/2012/01/12755.html</link>
		<comments>http://www.mianwww.com/html/2012/01/12755.html#comments</comments>
		<pubDate>Wed, 18 Jan 2012 14:11:01 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[JSP]]></category>
		<category><![CDATA[Servlet]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=12755</guid>
		<description><![CDATA[1 三个Statment区别，用法 Statment,基本的；PreparedStatement是可编译的，提高效率，callablestatment,存储过程 2 Cookie 答：临时cookie存在于内存中，（公话），长时cookic存在于硬盘上长时coolkie和临时cookie 路径问题 3 servlet调试方式几种方法 答：使用打印语句，使用TOMCAT日志，返回错误页面，使用IDE集成，重起服务器，直接查看HTML源代码，分别处理请求和响应数据。 4.Cookie 与session 的区别是：session为短对话，Cookie可以设置任意时间的有效期。 5.Get请求和Post请求区别 答：a、Post是通过Http中的Post机制将表单中的数据提交道Action所制定的程序Get方法是通过Url请求来提交表单数据的。 b.Get适用于传输数据量小于1K数据，执行效率高。Post传输数据量较大，但也有限量。 6. servlet生命周期 答:   Servlet 的生命周期始于将它装入 Web 服务器的内存时，并在终止或重新装入 Servlet 时结束。包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由 javax.servlet.Servlet 接口的 init,  service 和 destroy 方法表达。 描述servlet的生命周期，谁来控制servlet的生命周期，servlet生命周期在J2EE规范中是如何来定义的服务器实例化一个servlet对象，容器运行其init方法，请求到达时运行其service方法，service方法根据请求的类型调用（doGet，doPost）方法，当服务器决定将实例销毁时调用其destory方法 7、Servlet和Jsp的区别？ 答：Servlet是直接执行的文件Jsp是要被通过编译形成Servlet后才执行。 8.JSP构架模型 Model1：纯jsp 维护难，代码可复用性差 Model2：jsp+javabean 在jsp中使用usebean标签，代码在jsp中本质同Model1 Mvc：jsp+servlet+javabean 9. JSP隐含变量 request       用户端请求，此请求会包含来自GET/POST请求的参数 response      网页传回用户端的回应 pageContext  网页的属性是在这里管理 session       与请求有关的会话期 application    servlet 正在执行的内容 config   [...]]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2012/01/12755.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>servlet容器对url的匹配过程</title>
		<link>http://www.mianwww.com/html/2011/12/12418.html</link>
		<comments>http://www.mianwww.com/html/2011/12/12418.html#comments</comments>
		<pubDate>Sat, 03 Dec 2011 11:14:21 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[Servlet]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=12418</guid>
		<description><![CDATA[当一个请求发送到servlet容器的时候，容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url，比如我访问的是http://localhost/test/aaa.html，我的应用上下文是test，容器会将http://localhost/test去掉，剩下的/aaa.html部分拿来做servlet的映射匹配。这个映射匹配过程是有顺序的，而且当有一个servlet匹配成功以后，就不会去理会剩下的servlet了（filter不同，后文会提到）。其匹配规则和顺序如下： 1. 精确路径匹配。例子：比如servletA 的url-pattern为 /test，servletB的url-pattern为 /* ，这个时候，如果我访问的url为http://localhost/test ，这个时候容器就会先 进行精确路径匹配，发现/test正好被servletA精确匹配，那么就去调用servletA，也不会去理会其他的servlet了。 2. 最长路径匹配。例子：servletA的url-pattern为/test/*，而servletB的url-pattern为/test/a/*，此时访问http://localhost/test/a时，容器会选择路径最长的servlet来匹配，也就是这里的servletB。 3. 扩展匹配，如果url最后一段包含扩展，容器将会根据扩展选择合适的servlet。例子：servletA的url-pattern：*.action 4. 如果前面三条规则都没有找到一个servlet，容器会根据url选择对应的请求资源。如果应用定义了一个default servlet，则容器会将请求丢给default servlet（什么是default servlet？后面会讲）。 根据这个规则表，就能很清楚的知道servlet的匹配过程，所以定义servlet的时候也要考虑url-pattern的写法，以免出错。 对于filter，不会像servlet那样只匹配一个servlet，因为filter的集合是一个链，所以只会有处理的顺序不同，而不会出现只选择一个filter。Filter的处理顺序和filter-mapping在web.xml中定义的顺序相同。 二，url-pattern详解 在web.xml文件中，以下语法用于定义映射： l 以”/’开头和以”/*”结尾的是用来做路径映射的。 l 以前缀”*.”开头的是用来做扩展映射的。 l “/” 是用来定义default servlet映射的。 l 剩下的都是用来定义详细映射的。比如： /aa/bb/cc.action 所以，为什么定义”/*.action”这样一个看起来很正常的匹配会错？因为这个匹配即属于路径映射，也属于扩展映射，导致容器无法判断。]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/12/12418.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何开发线程安全的Servlet</title>
		<link>http://www.mianwww.com/html/2011/12/12416.html</link>
		<comments>http://www.mianwww.com/html/2011/12/12416.html#comments</comments>
		<pubDate>Sat, 03 Dec 2011 11:13:38 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[Servlet]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=12416</guid>
		<description><![CDATA[1，变量的线程安全：这里的变量指字段和共享数据(如表单参数值)。 a，将 参数变量 本地化。多线程并不共享局部变量.所以我们要尽可能的在servlet中使用局部变量。 例如：String user = &#8220;&#8221;; user = request.getParameter(&#8220;user&#8221;); b，使用同步块Synchronized，防止可能异步调用的代码块。这意味着线程需要排队处理。 在使用同板块的时候要尽可能的缩小同步代码的范围，不要直接在sevice方法和响应方法上使用同步，这样会严重影响性能。 2,属性的线程安全：ServletContext，HttpSession，ServletRequest对象中属性 ServletContext：（线程是不安全的） ServletContext是可以多线程同时读/写属性的，线程是不安全的。要对属性的读写进行同步处理或者进行深度Clone()。 所以在Servlet上下文中尽可能少量保存会被修改（写）的数据，可以采取其他方式在多个Servlet中共享，比方我们可以使用单例模式来处理共享数据。 HttpSession：（线程是不安全的） HttpSession对象在用户会话期间存在，只能在处理属于同一个Session的请求的线程中被访问，因此Session对象的属性访问理论上是线程安全的。 当用户打开多个同属于一个进程的浏览器窗口，在这些窗口的访问属于同一个Session，会出现多次请求，需要多个工作线程来处理请求，可能造成同时多线程读写属性。 这时我们需要对属性的读写进行同步处理：使用同步块Synchronized和使用读/写器来解决。 ServletRequest：（线程是安全的） 对于每一个请求，由一个工作线程来执行，都会创建有一个新的ServletRequest对象，所以ServletRequest对象只能在一个线程中被访问。ServletRequest是线程安全的。 注意：ServletRequest对象在service方法的范围内是有效的，不要试图在service方法结束后仍然保存请求对象的引用。 3，使用同步的集合类： 使用Vector代替ArrayList，使用Hashtable代替HashMap。 4，不要在Servlet中创建自己的线程来完成某个功能。 Servlet本身就是多线程的，在Servlet中再创建线程，将导致执行情况复杂化，出现多线程安全问题。 5，在多个servlet中对外部对象(比方文件)进行修改操作一定要加锁，做到互斥的访问。 6，javax.servlet.SingleThreadModel接口是一个标识接口，如果一个Servlet实现了这个接口，那Servlet容器将保证在一个时刻仅有一个线程可以在给定的servlet实例的service方法中执行。将其他所有请求进行排队。 服务器可以使用多个实例来处理请求，代替单个实例的请求排队带来的效益问题。服务器创建一个Servlet类的多个Servlet实例组成的实例池，对于每个请求分配Servlet实例进行响应处理，之后放回到实例池中等待下此请求。这样就造成并发访问的问题。 此时,局部变量(字段)也是安全的，但对于全局变量和共享数据是不安全的，需要进行同步处理。而对于这样多实例的情况SingleThreadModel接口并不能解决并发访问问题。]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/12/12416.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Servlet容器如何同时来处理多个请求</title>
		<link>http://www.mianwww.com/html/2011/12/12414.html</link>
		<comments>http://www.mianwww.com/html/2011/12/12414.html#comments</comments>
		<pubDate>Sat, 03 Dec 2011 11:13:07 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[Servlet]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=12414</guid>
		<description><![CDATA[先说明几个概念： 工作者线程Work Thread:执行代码的一组线程 调度线程Dispatcher Thread：每个线程都具有分配给它的线程优先级,线程是根据优先级调度执行的 Servlet采用多线程来处理多个请求同时访问。servlet依赖于一个线程池来服务请求。线程池实际上是一系列的工作者线程集合。Servlet使用一个调度线程来管理工作者线程. 当容器收到一个Servlet请求，调度线程从线程池中选出一个工作者线程,将请求传递给该工作者线程，然后由该线程来执行Servlet的service方法。当这个线程正在执行的时候,容器收到另外一个请求,调度线程同样从线程池中选出另一个工作者线程来服务新的请求,容器并不关心这个请求是否访问的是同一个Servlet.当容器同时收到对同一个Servlet的多个请求的时候，那么这个Servlet的service()方法将在多线程中并发执行。 Servlet容器默认采用单实例多线程的方式来处理请求，这样减少产生Servlet实例的开销，提升了对请求的响应时间，对于Tomcat可以在server.xml中通过&#60;Connector&#62;元素设置线程池中线程的数目。 就实现来说： 调度者线程类所担负的责任如其名字，该类的责任是调度线程，只需要利用自己的属性完成自己的责任。所以该类是承担了责任的，并且该类的责任又集中到唯一的单体对象中。 而其他对象又依赖于该特定对象所承担的责任，我们就需要得到该特定对象。那该类就是一个单例模式的实现了。]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/12/12414.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何进行servlet开发</title>
		<link>http://www.mianwww.com/html/2011/12/12412.html</link>
		<comments>http://www.mianwww.com/html/2011/12/12412.html#comments</comments>
		<pubDate>Sat, 03 Dec 2011 11:12:35 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[Servlet]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=12412</guid>
		<description><![CDATA[1、Servlet目录结构 项目文件夹/WEB-INF/classes/.class文件 项目文件夹/WEB-INF/lib/所需要的jar包 项目文件夹/WEB-INF/web.xml配置文件 2、xml配置文件 &#60;?xml version=&#8221;1.0&#8243; encoding=&#8221;ISO-8859-1&#8243;?&#62; &#60;web-app xmlns=&#8221;http://java.sun.com/xml/ns/javaee&#8221; xmlns:xsi=&#8221;http://www.w3.org/2001/XMLSchema-instance&#8221; xsi:schemaLocation=&#8221;http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd&#8221; version=&#8221;3.0&#8243; metadata-complete=&#8221;true&#8221;&#62; &#60;display-name&#62;Welcome to Tomcat&#60;/display-name&#62; &#60;description&#62; Welcome to Tomcat &#60;/description&#62; &#60;servlet&#62; //名字自己随便起 &#60;servlet-name&#62;Hello&#60;/servlet-name&#62; //对应的class文件 包名+类名 &#60;servlet-class&#62;aa.Hello&#60;/servlet-class&#62; &#60;/servlet&#62; &#60;servlet-mapping&#62; //此&#60;servlet-name&#62;与&#60;servlet&#62;中的一定相同 &#60;servlet-name&#62;Hello&#60;/servlet-name&#62; //浏览器访问地址 随便写！ &#60;url-pattern&#62;/sp&#60;/url-pattern&#62; &#60;/servlet-mapping&#62; &#60;/web-app&#62; 3、servlet编程 （实现Servlet接口方式） package aa; import javax.servlet.*; import java.io.*; public class Hello implements Servlet { //销毁servlet实例（释放内存） //1、reload 该servlet //2、关闭tomcat //3、关机 [...]]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/12/12412.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>介绍一下servlet原理</title>
		<link>http://www.mianwww.com/html/2011/12/12410.html</link>
		<comments>http://www.mianwww.com/html/2011/12/12410.html#comments</comments>
		<pubDate>Sat, 03 Dec 2011 11:12:01 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[Servlet]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=12410</guid>
		<description><![CDATA[1、Servlet执行过程 用户请求一个Servlet，Servlet容器自动构建请求和响应对象，然后执行Servlet的service()方法，该方法会接收请求和响应对象，通过响应对象将处理结果发送给用户。 2、怎么请求Servlet 用户通过一个URL来请求一个Servlet。 3、怎么处理请求 当用户请求Servlet时，容器构建ServletRequest对象request，并传递给Servlet的Service()方法，Service通过request对象获取到请求的参数，然后，根据参数做出相应的处理，通过ServletResponse对象来向客户端发送响应内容。 4、怎么响应客户端 当用户请求一个Servlet时候，容器会自动创建ServletResponse对象response，然后通过response对象向客户端发送响应内容。 5、Servlet的生命周期 a、Servlet的class经过部署，并启动容器 b、（当请求该Servlet时候）容器自动创建Servlet对象xServlet，然后xServlet调用其init()方法。到此，Servlet初始化结束。 c、一旦客户端请求该Servlet，xServlet自动调用service()来处理请求。 d、一旦很长时间都没有请求该Servlet（或者说该Servlet超时），则容器会将xServlet从容器中清除掉。 二、Servlet接口API 1、接口五个方法 2、Servlet的分支 3、Servlet的请求对象ServletRequest 4、Servlet的响应对象ServletResponse 5、Http相关的Servlet 三、总结 1、Servlet是一种规范，称为Servlet规范，是J2EE规范的一部分。 2、Servlet规范定义了Servlet相关的一组接口、其实现是由Servlet容器开发商来实现，类似于JDBC驱动。 3、Servlet的也是类，其对象是通过Servlet容器来创建，Servlet只能在Servlet容器中运行。打个比方说：容器是青山，Servlet是松柏。 4、当客户端请求Servlet时，容器会做两件事情： a、Servlet容器会将请求自动组装为一个ServletRequest对象，并自动产生一个ServletResponse对象，这两个对象一并传递给Servlet的service(request,response）方法。 b、在该Servlet对象上调用service(request,response)方法来处理并响应用户的请求。 5、用户无法直接调用Servlet的方法，也无法去创建Servlet的实例。]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/12/12410.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Servlet基础面试题</title>
		<link>http://www.mianwww.com/html/2011/09/10344.html</link>
		<comments>http://www.mianwww.com/html/2011/09/10344.html#comments</comments>
		<pubDate>Fri, 23 Sep 2011 13:23:03 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[Servlet]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=10344</guid>
		<description><![CDATA[1.网络通讯中，端口有什么含义。端口的取值范围？ 2.jsp是如何被容器调用和执行的？ 3.编写一个servlet的步骤。 4.为什么要为servlet配置URL映射 5.谈谈servlet的生命周期 6.说出3个常见协议的默认端口。 7.socket是什么，它有什么作用？ 8.TCP/IP通讯的基本步骤是什么？ 9.UDP通讯的基本步骤是什么？ 10.JDBC访问数据库的基本步骤是什么(手写)？ 11、说说preparedStatement和Statement的区别 12.说说事务的概念，在JDBC编程中处理事务的步骤。 13. 数据库连接池的原理。为什么要使用连接池。 14. servlet和jsp有什么关系？ 15.编写一个servlet的步骤。]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/09/10344.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java面试题库整理版</title>
		<link>http://www.mianwww.com/html/2011/09/10165.html</link>
		<comments>http://www.mianwww.com/html/2011/09/10165.html#comments</comments>
		<pubDate>Sun, 11 Sep 2011 11:52:15 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JSP]]></category>
		<category><![CDATA[Servlet]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=10165</guid>
		<description><![CDATA[Y老师修改版 整理版 版权没有 翻版不究！ 2008-5-21 目录 目录 2 第一部分Jsp&#038;servlet 7 1 三个Statment区别，用法 7 2 什么是Cookie 7 3 servlet调用方式几种方法 7 4.Cookie 与session 的区别是： 7 5.Get请求和Post请求区别 7 6. servlet生命周期 （看ppt2） 7 7、Servlet和Jsp的区别？ 8 8.JSP构架模型 8 9. JSP隐含变量（也叫做内置对象、内建对象等等）这些东西在JSP当中，不用声明直接使用。 9 10.四大共享范围 9 11.MVC——如何理解MVC（看PPT14） 9 12. JSP生命周期（非常重要，还有servlet的声明周期也超级重要） 9 14. Forword和SendRedirect区别 10 15. 从 BeanFactoy或 ApplicationContext是通过什么模式取得实例的？如果要取得多个实例在配制文件中要怎样做映射 11 16. jsp有哪些动作?作用分别是什么? 11 17、session的特点见ppt8 [...]]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/09/10165.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Servlet面试题库</title>
		<link>http://www.mianwww.com/html/2011/06/9760.html</link>
		<comments>http://www.mianwww.com/html/2011/06/9760.html#comments</comments>
		<pubDate>Sat, 18 Jun 2011 05:16:42 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[Servlet]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=9760</guid>
		<description><![CDATA[1、说一说Servlet的生命周期? 2、JAVA SERVLET API中forward() 与redirect()的区别？ 3.Servlet的基本架构代码片断是什么？ 4.什么情况下调用doGet()和doPost()？ 5.servlet的生命周期是什么？ 6.如何现实servlet的单线程模式？ 7. 页面间对象传递的方法是什么？ 8.四种会话跟踪技术包括哪几项？ 9.Request对象的主要方法包括哪些？ 10.我们在web应用开发过程中经常遇到输出某种编码的字符，如iso8859-1等，如何输出一个某种编码的字符串？ 11.Servlet执行时一般实现哪几个方法？ 12.说出数据连接池的工作机制是什么? 13.Class.forName的作用? 14、什么情况下调用doGet()和doPost()？ 15、servlet的生命周期？ 16、JSP和Servlet有哪些相同点和不同点，他们之间的联系是什么？ 17、四种会话跟踪技术 ？]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/06/9760.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Servlet面试题库 选择题</title>
		<link>http://www.mianwww.com/html/2011/06/9758.html</link>
		<comments>http://www.mianwww.com/html/2011/06/9758.html#comments</comments>
		<pubDate>Sat, 18 Jun 2011 05:15:51 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[Servlet]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=9758</guid>
		<description><![CDATA[1、有两个Servlet：servlet1和servlet2，servlet1把HttpServletRequest和HttpServletResponse成功发送到servlet2，在servlet1中有如下代码： Integer I=new Integer(10); request.setAttribute(&#8220;x&#8221;,I); 以下是在servlet2中对属性x操作的代码，正确的是： A. Integer y=request.getAttribute(&#8220;x&#8221;); B. Object y=request.getAttribute(&#8220;x&#8221;); C. int y= ((Integer)request.getAttribute(&#8220;x&#8221;)).intValue(); D. Integer y=(Integer)request.getAttribute(x); E. request.removeAttribute(&#8220;x&#8221;); 2、在web.xml中，有如下代码： 30 对于以下描述，正确的是： A. 定义了默认的会话超时时长。时长为30秒。 B. 可以使用HttpSession接口的getMaxInactiveInterval()方法把该值取出来。 C. 定义了默认的会话超时时长。时长为30小时。 D. 可以使用Session类的getMaxInactiveInterval()方法把该值取出来。 3、 对于自己编写的Servlet1，以下对Servlet1的定义正确的是： A. class Servlet1 implements javax.servlet.Servlet B. class Servlet1 extends javax.servlet.GenericServlet C. class Servlet1 extends javax.servlet.http.HttpServlet D. class Servlet1 extends javax.servlet.ServletRequest 4、 [...]]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/06/9758.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

