继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

校招面试之Java web部分

烙印99
关注TA
已关注
手记 389
粉丝 92
获赞 446

1.0 HTTP请求的GET与POST方式的区别
        1)get用来请求资源,post用来提交资源
        2)get参数在url上,不安全,post相对安全
        3)get传递数据量长度受url长度限制,post没有限制
等等
这里写图片描述

2.0 解释一下什么是servlet
        【答】servlet是在服务器上运行以处理客户端请求并做出响应的程序。servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。

2.1 说一说Servlet的生命周期?  
        servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。
        当客户第一次请求时,首先判断是否存在Servlet对象,若不存在,则由Web容器创建对象,而后调用init()方法对其初始化,此初始化方法在整个Servlet生命周期中只调用一次。
        完成Servlet对象的创建和实例化之后,Web容器会调用Servlet对象的service()方法来处理请求。根据请求的不同调用不同的do***()方法。
        当Web容器关闭或者Servlet对象要从容器中被删除时,会自动调用destory()方法。

2.2 Servlet的基本架构  

public class ServletDemo extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        // TODO Auto-generated method stub
        super.doGet(req, resp);
    }    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        // TODO Auto-generated method stub
        super.doPost(req, resp);
    }

}

3.0 SERVLET API中forward() 与redirect()的区别?  
        forward,称为转发,也可称“直接请求转发“,而Redirect,也称为“重定向”,也可称为“间接请求转发“
        前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用
sendRedirect()方法。  
        【两者最本的区别:】Forward:客户端和浏览器只发出一次请求。Redirect:实际是两次HTTP请求,服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。
        举个通俗的例子:
        直接转发就相当于:“A找B借钱,B说没有,B去找C借,借到借不到都会把消息传递给A。此时A是不知道B去找C 借钱的。A只找了B一次”;
        间接转发就相当于:”A找B借钱,B说没有,让A去找C借。A找了B,又去找了C。找了两次”。

4.0 什么情况下调用doGet()和doPost()?
        调用doGet():直接地址栏输入URL,或者超链接,或者form的method为默认或get。
        调用doPost():Form的method为post时。

5.0 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.0 request.getParameter()和request.getAttribute()   有何区别?
        1)赋值方式不一样,前者是客户端如浏览器端将请求参数值送给服务器端,而后者则是在请求到达服务器端之后,在服务器进行存放进去
        2)两者的返回值类型不一样,前者永远返回字符串,后者返回任意对象

7.0 jsp有哪些内置对象?作用分别是什么? 分别有什么方法?

答:JSP共有以下9个内置的对象: 
request 用户端请求,此请求会包含来自GET/POST请求的参数 
response 网页传回用户端的回应 
pageContext 网页的属性是在这里管理 
session 与请求有关的会话期 
application servlet 正在执行的内容 
out 用来传送回应的输出 
config servlet的构架部件 
page JSP网页本身 
exception 针对错误网页,未捕捉的例外 

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实例

8.0jsp有哪些动作?作用分别是什么? (这个问题似乎不重要,不明白为何有此题)

答:JSP共有以下6种基本动作 
    jsp:include:在页面被请求的时候引入一个文件。 
    jsp:useBean:寻找或者实例化一个JavaBean。 
    jsp:setProperty:设置JavaBean的属性。 
    jsp:getProperty:输出某个JavaBean的属性。 
    jsp:forward:把请求转到一个新的页面。 
    jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记

9.0 JSP的常用指令  
        【具体看这篇】http://blog.csdn.net/qq_16216221/article/details/46440387

10 JSP中动态INCLUDE与静态INCLUDE的区别?  
        1. 动态包含用的元素是page,而且有两种形式。静态包含用的是file,只有一种形式。
        2. 生成的文件不同,静态的包含是将两个jsp文件二合一,生成一个以包含页面命名的servlet和class文件,动态包含的两个jsp文件各自生成自己的servlet和class文件。
        3. 动态包含是可以通过ur向被包含的文件传输变量。被包含的文件可以动态的接收传输的变量,也就是为什么说“动态”。而静态包含是不能够传递变量。被包含的文件不能接收传输的变量。适用于包含静态页面
        另一种简答说法:
        1. 动态INCLUDE用jsp:include动作实现它总会检查所含文件中的变化,适用于动态页面并且可以带参数。
        2. 静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@include file=included.html%> 。

11 页面间对象传递的方法    
        request,session,application,cookie等

12 JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?    
        JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是”类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。  

原文出处

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP