1、HTTP请求的GET与POST方式的区别?
答案:1.get是从服务器上获取数据,post是向服务器上传数据。2.get是把参数数据列加到url中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML header 内一起传送到 action属性所指的URL地址。用户看不到这个过程。3.get传送的数据量较小。不能大于2kb,post传送的数据量较大,一般被默认为不受限制。但理论上,限制取决于服务器的处理能力。4.get安全性较低,post安全性较高。5.在FORM提交的时候,如果不指定Method,则默认为get请求.
2、解释一下什么是Servlet?
答案:Servlet是用Java技术来实现CGI功能的编程技术。它介于浏览器与服务器之间,起到桥梁的作用。
Servlet的作用:a、读取客户端发送的数据。 b、获取客户请求(request)中所包含的信息。c、产生响应结果,并将结果包含到一个文件中,例如html文件中。d、设置HTTP响应参数,例如告诉浏览器,文件类型为HTML。e、将文件返回给客户端。
3、阐述Servlet的生命周期?
答案:服务器先创建一个Servlet的实例,Servlet实例创建时,会调用init方法,之后,针对每个客户端的每个请求,都会创建一个线程,该线程调用Servlet实例的service方法。service方法根据收到的HTTP请求类型,调用相应的doGet()、doPost或者其他方法。最后如果需要卸载某个Servlet,服务器调用Servlet的destroy方法。一旦init方法调用之后,只有服务器调用了destroy方法之后,才能再次调用init方法。
4、什么情况下调用doGet()和doPost()?
答案:Jsp页面中的FORM标签里的method属性为get时调用doGet(),为post时调用doPost()。
5、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):删除请求中的一个属性
6、forward 和redirect的区别 ?
答案:forward服务器跳转,即服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。同属一个request,respose。
redirect是客户端跳转,即服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。
7、request.getAttribute() 和 request.getParameter() 有何区别?
答案:getParameter()是获取浏览器发送的请求,返回String。getAttribute()一般是获取setAttribute()的对象,返回的是Object。
8、jsp有哪些内置对象? 作用分别是什么? 分别有什么方法?
答案:JSP共有以下9个内置的对象:
request 客户端对服务器的请求
response 服务器对客户端请求的响应
session 与请求有关的会话期(客户端与服务器的一次完整的会话)
out 向客户端输出数据,JspWriter类的实例
page JSP网页本身
application 代表了该应用程序,所有客户共享该对象,是ServletContext的实例,开始与服务器启动,结束与服务器关闭。
pageContext 提供对JSP页面所有对象及名字空间的访问。是PageContext的实例。
exception 针对错误网页,未捕捉的例外,使用该对象必须将isErrorPage设置为true。否则编译出错。
config 用于Servlet初始化是使用,JSP引擎向它传递信息。
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实例
9、 jsp有哪些动作?作用分别是什么?
答案:JSP共有以下6种基本动作
jsp:include:在页面被请求的时候引入一个文件。
jsp:useBean:寻找或者实例化一个JavaBean。
jsp:setProperty:设置JavaBean的属性。
jsp:getProperty:输出某个JavaBean的属性。
jsp:forward:把请求转到一个新的页面。
jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记
10、JSP中动态include与静态include的区别?
答案:
动态include用jsp:include动作实现,<jsp:include page=included.jsp flush=true />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。
静态include用include伪码实现,一定不会检查所含文件的变化,适用于包含静态页面 <%@ include file=included.htm %>
11、页面间对象传递的方法?
答案: request,session,application,cookie等。
12、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
答案:JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表现。JSP编译后是"servlet类"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。
13、MVC的各个部分都有那些技术来实现?如何实现?
答案:MVC是Model-View-Controller的简写。Model 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), View 是应用的表示面(由JSP页面产生),Controller 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。
更多信息请查看 java面试题 http://www.itchm.com/zhaopinqiuzhi/java_bishi_mianshi/