精华内容
下载资源
问答
  • 2021-02-28 08:36:34

    面试一直以来是程序员入门的一道阑槛,你们都知道java中的servlet吧,今天我们就来看看过去常问的servlet面试题都有哪些吧。

    一、说一说Servlet生命周期

    Servlet生命周期包括三部分:

    初始化:Web容器加载servlet,调用init()方法

    处理请求:当请求到达时,运行其service()方法。service()自动派遣运行与请求相对应的doXXX(doGet或者doPost)方法。

    销毁:服务结束,web容器会调用servlet的distroy()方法销毁servlet。

    二、get提交和post提交有何区别

    (1)get一般用于从服务器上获取数据,post一般用于向服务器传送数据

    (2)请求的时候参数的位置有区别,get的参数是拼接在url后面,用户在浏览器地址栏可以看到。post是放在http包的包体中。

    比如说用户注册,你不能把用户提交的注册信息用get的方式吧,那不是说把用户的注册信息都显示在Url上了吗,是不安全的。

    (3)能提交的数据有区别,get方式能提交的数据只能是文本,且大小不超过1024个字节,而post不仅可以提交文本还有二进制文件。

    所以说想上传文件的话,那我们就需要使用post请求方式

    (4)servlet在处理请求的时候分别对应使用doGet和doPost方式进行处理请求

    三、说一说四种会话跟踪技术作用域有哪些

    (1)page:一个页面

    (2)request::一次请求

    (3)session:一次会话

    (4)application:服务器从启动到停止。

    四、JSP中动态INCLUDE和静态INCLUDE有什么区别

    include指令用于把另一个页面包含到当前页面中,在什么时候包含的?再转换成servlet的时候包含进去的。

    动态INCLUDE用jsp:include动作实现 它总是会检查所含文件中的变化,适合用于包含动态页面,

    并且可以带参数.

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

    五、jsp九大内置对象是什么

    1.request 说明 : 代表请求

    2.response 说明 : 代表响应

    3.out 说明 : 输出的数据流

    4.session 说明 : 会话

    5.application 说明 :全局的上下文对象

    6.pageContext 说明 : Jsp页面的上下文

    7.page 说明 : 代表 jsp页面本身(this)

    8.config 说明:代表 Servlet配置对象

    9.exception 说明:代表捕获页面的异常对象

    六、目前来说,前后端分离技术jsp基本上已经被淘汰了,JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?

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

    七、Cookie和Session的作用和区别

    (1)cookie 是一种发送到客户浏览器的文本串句柄,数据保存在客户端,可以用来在某个WEB站点会话间持久的保持数据。

    (2)session技术中所有的数据都保存在服务器上,客户端每次请求服务器的时候会发送当前会话的sessionid,服务器根据当前sessionid判断相应的用户数据标志,以确定用户是否登录或具有某种权限。

    (3)cookie和session的共同之处在于:cookie和session都是用来跟踪浏览器用户身份的会话方式。

    (4)cookie 和session的区别是:cookie数据保存在客户端,session数据保存在服务器端。

    八、如何知道是哪一个客户端的机器正在请求你的Servlet

    ServletRequest类可以找出客户端机器的IP地址或者是主机名。getRemoteAddr()方法获取客户端主机的IP地址,getRemoteHost()可以获取主机名。

    九、隐含对象是什么意思?有哪些隐含对象?

    JSP隐含对象是页面中的一些Java对象,JSP容器让这些Java对象可以为开发者所使用。开发者不用明确的声明就可以直接使用他们。JSP隐含对象也叫做预定义变量。下面列出了JSP页面中的隐含对象:application、page、request、response、session、exception、out、config、pageContext。

    以上就是关于servlet面试题的所有内容了,你理解了吗?如果还需要了解更多面试常见问题,就快来关注奇Q工具网吧。

    推荐阅读:

    更多相关内容
  • Servlet面试题

    2021-02-28 08:35:49
    Servlet的生命周期通过javax.servlet.Servlet接口中的init()、service()和destroy()方法来表示Servlet的生命周期包含了下面4个阶段:1.加载和实例化2.初始化3.请求处理4.服务终止Web服务器在与客户端交互时Servlet的...

    Servlet运行在Servlet容器中,其生命周期由容器来管理。Servlet的生命周期通过javax.servlet.Servlet接口中的init()、service()和destroy()方法来表示

    Servlet的生命周期包含了下面4个阶段:

    1.加载和实例化

    2.初始化

    3.请求处理

    4.服务终止

    1352204684_1548.jpg

    Web服务器在与客户端交互时Servlet的工作过程是:

    1.     在客户端对web服务器发出请求

    2.     web服务器接收到请求后将其发送给Servlet

    3.     Servlet容器为此产生一个实例对象并调用ServletAPI中相应的方法来对客户端HTTP请求进行处理,然后将处理的响应结果返回给WEB服务器.

    4.     web服务器将从Servlet实例对象中收到的响应结构发送回客户端.

    1352204551_9028.jpg

    servlet的生命周期:

    1.加载和实例化

    Servlet容器负责加载和实例化Servlet。当Servlet容器启动时,或者在容器检测到需要这个Servlet来响应第一个请求时,创建Servlet实例。当Servlet容器

    启动后,它必须要知道所需的Servlet类在什么位置,Servlet容器可以从本地文件系统、远程文件系统或者其他的网络服务中通过类加载器加载Servlet类,

    成功加载后,容器创建Servlet的实例。因为容器是通过Java的反射API来创建Servlet实例,调用的是Servlet的默认构造方法(即不带参数的构造方法),所

    以我们在编写Servlet类的时候,不应该提供带参数的构造方法。

    2.初始化

    在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象。初始化的目的是为了让Servlet对象在处理客户端请求前完成一些初始化的工作,

    如建立数据库的连接,获取配置信息等。对于每一个Servlet实例,init()方法只被调用一次。在初始化期间,Servlet实例可以使用容器为它准备的

    ServletConfig对象从Web应用程序的配置信息(在web.xml中配置)中获取初始化的参数信息。在初始化期间,如果发生错误,Servlet实例可以抛出

    ServletException异常或者UnavailableException异常来通知容器。ServletException异常用于指明一般的初始化失败,例如没有找到初始化参数;而

    UnavailableException异常用于通知容器该Servlet实例不可用。例如,数据库服务器没有启动,数据库连接无法建立,Servlet就可以抛出

    UnavailableException异常向容器指出它暂时或永久不可用。

    I.如何配置Servlet的初始化参数?

    在web.xml中该Servlet的定义标记中,比如:

    TimeServlet

    com.allanlxf.servlet.basic.TimeServlet

    user

    username

    blog

    http://。。。

    配置了两个初始化参数user和blog它们的值分别为username和http://。。。, 这样以后要修改用户名和博客的地址不需要修改Servlet代码,只需修改配置文件即可。

    II.如何读取Servlet的初始化参数?

    ServletConfig中定义了如下的方法用来读取初始化参数的信息:

    public String getInitParameter(String name)

    参数:初始化参数的名称。

    返回:初始化参数的值,如果没有配置,返回null。

    III.init(ServletConfig)方法执行次数

    在Servlet的生命周期中,该方法执行一次。

    IV.init(ServletConfig)方法与线程

    该方法执行在单线程的环境下,因此开发者不用考虑线程安全的问题。

    V.init(ServletConfig)方法与异常

    该方法在执行过程中可以抛出ServletException来通知Web服务器Servlet实例初始化失败。一旦ServletException抛出,Web服务器不会将客户端请求交给该Servlet实例来处理,而是报告初始化失败异常信息给客户端,该Servlet实例将被从内存中销毁。如果在来新的请求,Web服务器会创建新的Servlet实例,并执行新实例的初始化操作

    3.请求处理

    Servlet容器调用Servlet的service()方法对请求进行处理。要注意的是,在service()方法调用之前,init()方法必须成功执行。在service()方法中,

    Servlet实例通过ServletRequest对象得到客户端的相关信息和请求信息,在对请求进行处理后,调用ServletResponse对象的方法设置响应信息。在service

    ()方法执行期间,如果发生错误,Servlet实例可以抛出ServletException异常或者UnavailableException异常。如果UnavailableException异常指示了该实

    例永久不可用,Servlet容器将调用实例的destroy()方法,释放该实例。此后对该实例的任何请求,都将收到容器发送的HTTP 404(请求的资源不可用)响应

    。如果UnavailableException异常指示了该实例暂时不可用,那么在暂时不可用的时间段内,对该实例的任何请求,都将收到容器发送的HTTP 503(服务器暂

    时忙,不能处理请求)响应。

    I. service()方法的职责

    service()方法为Servlet的核心方法,客户端的业务逻辑应该在该方法内执行,典型的服务方法的开发流程为:

    解析客户端请求-〉执行业务逻辑-〉输出响应页面到客户端

    II.service()方法与线程

    为了提高效率,Servlet规范要求一个Servlet实例必须能够同时服务于多个客户端请求,即service()方法运行在多线程的环境下,Servlet开发者必须保证该方法的线程安全性。

    III.service()方法与异常

    service()方法在执行的过程中可以抛出ServletException和IOException。其中ServletException可以在处理客户端请求的过程中抛出,比如请求的资源不可用、数据库不可用等。一旦该异常抛出,容器必须回收请求对象,并报告客户端该异常信息。IOException表示输入输出的错误,编程者不必关心该异常,直接由容器报告给客户端即可。

    编程注意事项说明:

    1) 当Server Thread线程执行Servlet实例的init()方法时,所有的Client Service Thread线程都不能执行该实例的service()方法,更没有线程能够执行该实例的destroy()方法,因此Servlet的init()方法是工作在单线程的环境下,开发者不必考虑任何线程安全的问题。

    2) 当服务器接收到来自客户端的多个请求时,服务器会在单独的Client Service Thread线程中执行Servlet实例的service()方法服务于每个客户端。此时会有多个线程同时执行同一个Servlet实例的service()方法,因此必须考虑线程安全的问题。

    3) 请大家注意,虽然service()方法运行在多线程的环境下,并不一定要同步该方法。而是要看这个方法在执行过程中访问的资源类型及对资源的访问方式。分析如下:

    i. 如果service()方法没有访问Servlet的成员变量也没有访问全局的资源比如静态变量、文件、数据库连接等,而是只使用了当前线程自己的资源,比如非指向全局资源的临时变量、request和response对象等。该方法本身就是线程安全的,不必进行任何的同步控制。

    ii. 如果service()方法访问了Servlet的成员变量,但是对该变量的操作是只读操作,该方法本身就是线程安全的,不必进行任何的同步控制。

    iii. 如果service()方法访问了Servlet的成员变量,并且对该变量的操作既有读又有写,通常需要加上同步控制语句。

    iv. 如果service()方法访问了全局的静态变量,如果同一时刻系统中也可能有其它线程访问该静态变量,如果既有读也有写的操作,通常需要加上同步控制语句。

    v. 如果service()方法访问了全局的资源,比如文件、数据库连接等,通常需要加上同步控制语句。

    4.服务终止

    当容器检测到一个Servlet实例应该从服务中被移除的时候,容器就会调用实例的destroy()方法,以便让该实例可以释放它所使用的资源,保存数据到持久存

    储设备中。当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例

    随后会被Java的垃圾收集器所回收。如果再次需要这个Servlet处理请求,Servlet容器会创建一个新的Servlet实例。

    在整个Servlet的生命周期过程中,创建Servlet实例、调用实例的init()和destroy()方法都只进行一次,当初始化完成后,Servlet容器会将该实例保存在内存中,通过调用它的service()方法,为接收到的请求服务。

    展开全文
  • Java面试题20.jsp和Servlet的相同点和不同点?.mp4 │ Java面试题21.内置对象和四大作用域和页面传值.mp4 │ Java面试题22.Session和Cookie的区别.mp4 │ Java面试题23.mvc模式和mvc各部分的实现.mp4 │ Java面试...
  • servlet面试题

    2017-05-27 17:12:24
    servlet面试题
  • Java -- Servlet面试题及答案(需更深入了解)

    万次阅读 多人点赞 2018-06-23 10:17:24
    Servlet方面 1、说一说Servlet的生命周期?Servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。 Servlet被...

    Servlet方面

    1、说一说Servlet的生命周期?

    Servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,servicedestroy方法表达。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGetdoPost)等,当服务器决定将实例销毁的时候调用其destroy方法。

    cgi的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet

    2JAVA SERVLET APIforward() redirect()的区别?

    forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,其实客户端浏览器只发了一次请求,所以它的地址栏中还是原来的地址,session,request参数都可以获取。

    redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,相当于客户端浏览器发送了两次请求。

    3Servlet的基本架构

    public class ServletName extends HttpServlet {

      public void doPost(HttpServletRequest request, HttpServletResponse response) throws

          ServletException, IOException  {

          }

      public void doGet(HttpServletRequest request, HttpServletResponse response) throws

          ServletException, IOException  {

          }

    }

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

    JSP页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost();超链接跳转页面时调用doGet()

    5servlet的生命周期

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

    6、页面间对象传递的方法

    requestsessionapplicationcookie

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

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

    8、四种会话跟踪技术

    会话作用域ServletsJSP 页面描述

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

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

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

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

    9Request对象的主要方法

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

    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):删除请求中的一个属性

    10、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?

      Public String translate (String str) {

        String tempStr = "";

        try {

          tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");

          tempStr = tempStr.trim();

        }

        catch (Exception e) {

          System.err.println(e.getMessage());

        }

        return tempStr;

      }

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

    public void init(ServletConfig config)

    public ServletConfig getServletConfig()

    public String getServletInfo()

    public void service(ServletRequest request,ServletResponse response)

    public void destroy()

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

    1cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个WEB站点会话间持久的保持数据。

    2session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。 Session其实是利用Cookie进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个Cookie,当这个Session结束时,其实就是意味着这个Cookie就过期了。

    注:为这个用户创建的Cookie的名称是aspsessionid。这个Cookie的唯一目的就是为每一个用户提供不同的身份认证。

    3cookiesession的共同之处在于:cookiesession都是用来跟踪浏览器用户身份的会话方式。

    4cookie session的区别是:cookie数据保存在客户端,session数据保存在服务器端。

    5session工作原理:session技术中所有的数据都保存在服务器上,客户端每次请求服务器的时候会发送当前会话的sessionid,服务器根据当前sessionid判断相应的用户数据标志,以确定用户是否登录或具有某种权限。

    13、什么是Servlet

    Servlet是用来处理客户端请求并产生动态网页内容的Java类。Servlet主要是用来处理或者是存储HTML表单提交的数据,产生动态内容,在无状态的HTTP协议下管理状态信息。

    14、说一下Servlet的体系结构。

    所有的Servlet都必须要实现的核心的接口是javax.servlet.Servlet。每一个Servlet都必须要直接或者是间接实现这个接口,或者是继承javax.servlet.GenericServlet或者javax.servlet.http.HTTPServlet。最后,Servlet使用多线程可以并行的为多个请求服务。

    15AppletServlet有什么区别?

    Applet是运行在客户端主机的浏览器上的客户端Java程序。而Servlet是运行在web服务器上的服务端的组件。applet可以使用用户界面类,而Servlet没有用户界面,相反,Servlet是等待客户端的HTTP请求,然后为请求产生响应。

    16GenericServletHttpServlet有什么区别?

    GenericServlet是一个通用的协议无关的Servlet,它实现了ServletServletConfig接口。继承自GenericServletServlet应该要覆盖service()方法。最后,为了开发一个能用在网页上服务于使用HTTP协议请求的Servlet,你的Servlet必须要继承自HttpServlet。这里有Servlet的例子。

    17、解释下Servlet的生命周期。

    对每一个客户端的请求,Servlet引擎载入Servlet,调用它的init()方法,完成Servlet的初始化。然后,Servlet对象通过为每一个请求单独调用service()方法来处理所有随后来自客户端的请求,最后,调用Servlet(译者注:这里应该是Servlet而不是server)destroy()方法把Servlet删除掉。

    18doGet()方法和doPost()方法有什么区别?

    doGetGET方法会把名值对追加在请求的URL后面。因为URL对字符数目有限制,进而限制了用在客户端请求的参数值的数目。并且请求中的参数值是可见的,因此,敏感信息不能用这种方式传递。

    doPOSTPOST方法通过把请求参数值放在请求体中来克服GET方法的限制,因此,可以发送的参数的数目是没有限制的。最后,通过POST请求传递的敏感信息对外部客户端是不可见的。

    19、什么是Web应用程序?

    Web应用程序是对Web或者是应用服务器的动态扩展。有两种类型的Web应用:面向表现的和面向服务的。面向表现的Web应用程序会产生包含了很多种标记语言和动态内容的交互的web页面作为对请求的响应。而面向服务的Web应用实现了Web服务的端点(endpoint)。一般来说,一个Web应用可以看成是一组安装在服务器URL名称空间的特定子集下面的Servlet的集合。

    20、什么是服务端包含(Server Side Include)

    服务端包含(SSI)是一种简单的解释型服务端脚本语言,大多数时候仅用在Web上,用servlet标签嵌入进来。SSI最常用的场景把一个或多个文件包含到Web服务器的一个Web页面中。当浏览器访问Web页面的时候,Web服务器会用对应的servlet产生的文本来替换Web页面中的servlet标签。

    21、什么是Servlet(Servlet Chaining)

    Servlet链是把一个Servlet的输出发送给另一个Servlet的方法。第二个Servlet的输出可以发送给第三个Servlet,依次类推。链条上最后一个Servlet负责把响应发送给客户端。

    22、如何知道是哪一个客户端的机器正在请求你的Servlet

    ServletRequest类可以找出客户端机器的IP地址或者是主机名。getRemoteAddr()方法获取客户端主机的IP地址,getRemoteHost()可以获取主机名。看下这里的例子。

    23HTTP响应的结构是怎么样的?

    HTTP响应由三个部分组成:

    状态码(Status Code):描述了响应的状态。可以用来检查是否成功的完成了请求。请求失败的情况下,状态码可用来找出失败的原因。如果Servlet没有返回状态码,默认会返回成功的状态码HttpServletResponse.SC_OK

    HTTP头部(HTTP Header):它们包含了更多关于响应的信息。比如:头部可以指定认为响应过期的过期日期,或者是指定用来给用户安全的传输实体内容的编码格式。如何在Serlet中检索HTTP的头部看这里。

    主体(Body):它包含了响应的内容。它可以包含HTML代码,图片,等等。主体是由传输在HTTP消息中紧跟在头部后面的数据字节组成的。

    24、什么是cookiesessioncookie有什么区别?

    cookieWeb服务器发送给浏览器的一块信息。浏览器会在本地文件中给每一个Web服务器存储cookie。以后浏览器在给特定的Web服务器发请求的时候,同时会发送所有为该服务器存储的cookie。下面列出了sessioncookie的区别:

    无论客户端浏览器做怎么样的设置,session都应该能正常工作。客户端可以选择禁用cookie,但是,session仍然是能够工作的,因为客户端无法禁用服务端的session

    在存储的数据量方面sessioncookies也是不一样的。session能够存储任意的Java对象,cookie只能存储String类型的对象。

    25、浏览器和Servlet通信使用的是什么协议?

    浏览器和Servlet通信使用的是HTTP协议。

    26、什么是HTTP隧道?

    HTTP隧道是一种利用HTTP或者是HTTPS把多种网络协议封装起来进行通信的技术。因此,HTTP协议扮演了一个打通用于通信的网络协议的管道的包装器的角色。把其他协议的请求掩盖成HTTP的请求就是HTTP隧道。

    27sendRedirect()forward()方法有什么区别?

    sendRedirect()方法会创建一个新的请求,而forward()方法只是把请求转发到一个新的目标上。重定向(redirect)以后,之前请求作用域范围以内的对象就失效了,因为会产生一个新的请求,而转发(forwarding)以后,之前请求作用域范围以内的对象还是能访问的。一般认为sendRedirect()forward()要慢。

    28、什么是URL编码和URL解码?

    URL编码是负责把URL里面的空格和其他的特殊字符替换成对应的十六进制表示,反之就是解码。

    JSP

    29、什么是Scriptlets

    JSP技术中,scriptlet是嵌入在JSP页面中的一段Java代码。scriptlet是位于标签内部的所有的东西,在标签与标签之间,用户可以添加任意有效的scriplet

    30、声明(Decalaration)在哪里?

    声明跟Java中的变量声明很相似,它用来声明随后要被表达式或者scriptlet使用的变量。添加的声明必须要用开始和结束标签包起来。

    31、什么是表达式(Expression)

    【列表很长,可以分上、中、下发布】

    JSP表达式是Web服务器把脚本语言表达式的值转化成一个String对象,插入到返回给客户端的数据流中。表达式是在<%=%>这两个标签之间定义的。

    32、隐含对象是什么意思?有哪些隐含对象?

    JSP隐含对象是页面中的一些Java对象,JSP容器让这些Java对象可以为开发者所使用。开发者不用明确的声明就可以直接使用他们。JSP隐含对象也叫做预定义变量。下面列出了JSP页面中的隐含对象:

    • application

    • page

    • request

    • response

    • session

    • exception

    • out

    • config

    • pageContext

     

    展开全文
  • Servlet面试题Java Web开发面试题
  • Servlet面试题18道

    2022-04-30 15:29:24
    servlet主要用于逻辑处理,处理完之后,将结果交给jsp,由jsp向客户端做出响应 3.servlet生命周期是什么? (1)服务器启动时创建 在客户端第一次访问LoginServlet时创建 只被调用一次,只创建一个servlet对象 单...

    1.tomcat调优?

    tomcat 如何进行优化?优化方案有哪些?_小小来也的博客-CSDN博客_tomcat优化的几种方法

    2.什么是Servlet?

    servlet主要用于逻辑处理,处理完之后,将结果交给jsp,由jsp向客户端做出响应

    3.servlet生命周期是什么?

    (1)服务器启动时创建

    在客户端第一次访问LoginServlet时创建

    只被调用一次,只创建一个servlet对象 单实例的

    (2)初始化

    在对象创建后,构造方法执行后,服务器调用init方法,完成一些初始化操作

    只执行一次,如果没有写初始化操作可以不用重写init()

    但是服务器仍然会调用父类中的init()

    (3)提供服务器

    每次请求都会调用service,只执行一次

    (4)关闭

    在服务器关闭前,servlet销毁前调用,

    可以在次方中完成最终操作

    列如:保存日志,数据备份

    4.get和post请求的区别是什么?

    get请求:

    主要用于从服务器获取数据

    也可以向服务器发送数据,数据在地址中传递,会在地址中显示

    但是长度有限制

    安全性很低

    post请求:

    主要用于向服务器发送请求

    提交数据在请求中发送,

    长度没有限制(例如:可以提交文件)

    安全性较高

    5.什么是请求转发和重定向

    转发:

    request.getRequestDispatcher(url).forword(request,response)

    获得请求转发对象,告诉对象转发的地址

    好比张三找李四借钱,李四没有钱便去找王五借了钱,之后再把钱借给了张三。李四找王五借钱张三是不知道的,而且张三借钱只借了一次!

    重定向:

    response.sendRedirect(url)

    重新指定浏览器地址

    好比张三找李四借钱,李四没钱,李四告诉张三王五有钱,之后张三便去找王五借到了钱。此过程张三借钱借了两次!

    6.请求转发和重定向的区别

    请求转发:

    整个过程属于一次请求

    浏览器中的地址不发生变化,转发的动作在服务器内部完成

    客户端不知情

    重定向:

    整个过程有俩次请求,地址栏的地址会发生变化

    在第二次请求中不能获得上一次请求对象中的数据

    7.jsp和servlet的联系与区别

    (1)本质都是servlet

    (2)servlet侧重于逻辑处理

    (3)jsp侧重于视图显示

    8.说一说静态包含和动态包含的区别

    (1) 语法不同

    静态包含语法: <%@inclue file="被包含的页面"%>

    动态包含语法: <jsp:include page="被包含的页面">

    (2)参数传递不同

    静态包含不能向被包含页面传递参数

    动态包含可以使用jsp:param标签向被包含页面传递参数

    (3)原理不同

    静态包含: 先合并再翻译

    动态包含: 先翻译再合并

    9.九大内置对象是什么?

    1.page页面对象,2.config配置对象,3.request请求对象,4.response响应对象,5.session会话对象,6.application全局对象,7.out输出对象,8.pageContext页面上下文对象,9.exception异常对象

    10.JSP四大作用域

    page:

    只在当前页面有效

    request:

    它在当前请求中有效

    session:

    它在当前会话中有效

    application:

    他在所有的应用程序中都有效

    注意:当4个作用域对象都有相同的name属性时,默认按照最小的顺序查找

    11.application和request,session的区别?
    request:单次请求。
    session:浏览器访问期间(整个会话期间有效)。
    application:服务器启动到关闭服务器期间全都有效,而且存储的数据可以跨浏览器。

    12.什么是Session对象?

    session:

    是管理会话,回话跟踪技术

    是存储管理

    同一个会话,同一个网页

    会话:

    打开浏览器,连接到服务器(访问一个servlet,jsp)会话开始

    关闭浏览器,回话结束

    13.session对象的原理是什么?

    (1)打开浏览器 回话开始

    (2)服务器为本次回话创建一个session对象,生成一个id号(唯一),将id号响应到浏览器中

    (3)浏览器默认将id号存储内存中,之后向服务器请求时都会将此id向服务器端发送

    (4)服务器就会找与id匹配的session对象,如果找不到对应的session,那么服务器就会重新创建一个session对象

    14.谈一谈session对象的生命周期

    (1)创建:会话开始时,在服务器端创建

    (2)销毁:

    httpSession.removeAttribute("userID");
    httpSession.invalidate();  

    服务器关闭时,session对象销毁

    客户端长时间不与服务器交互,

    eg:tomcat默认30分钟服务器会自动销毁session对象

    安全退出,调用invalidate();强制销毁session对象

    15.什么是过滤器(Filter)

    在请求到达服务器资源(servlet/jsp)之前 , 过滤器可以拦截某些请求

    在过滤器中就可以添加一些相应的代码处理,可以减少代码冗余

    16.过滤器生命周期

    init() 在服务器启动时执行

    destroy() 在服务器关闭时销毁

    17.什么是监听器

    用于监听ServletContext,HttpSession和ServletRequest等域对象的创建与销毁,以及对象中属性的修改

    18.过滤器生命周期

    创建于服务器的启动

    销毁于服务器的关闭

    展开全文
  • Java Servlet可以用于处理客户请求或生成动态Web网页。先一个实例。然后解释。先编辑如下文件,暂且命名为FirstServlet.javaimport javax.servlet.*;import javax.servlet.http.*;public class FirstSer...
  • JAVA笔试面试资料JDBC HTTP、JSP、Servlet、Struts面试题汇总资料: 2014年最新Java笔试题及答案.docx 225道Java面试题 学会了Java面试随你问.docx Ant和Maven的作用是什么?两者之间功能、特点有哪些区别?.docx ...
  • JSP和Servlet面试题

    2018-01-04 17:08:14
    常考面试题 1.讲下servlet的执行流程。 Servlet的执行流程也就是servlet的生命周期,当服务器启动的时候生命周期开始,然后通过init()《启动顺序根据web.xml里的startup-on-load来确定加载顺序》 方法初始化...
  • 列出了30个针对初学者和专业人士的servlet面试问题。如果你知道此处未包含任何Servlet采访问题, 请将你的问题发布在Ask Question部分。1)创建了一个servlet多少个对象?Servlet或Web容器首次请求时只有一个对象。2)...
  • filter 的作用是什么?主要实现什么方法?doFilter方法里面的2个参数request 和 ... Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在离开servlet时处理r...
  • 10万字208道Java经典面试题总结(附答案)

    万次阅读 多人点赞 2021-08-01 16:05:55
    JDK(Java Development Kit),Java开发工具包 JRE(Java Runtime Environment),Java运行环境 JDK中包含JRE,JDK中有一个名为jre的目录,里面包含两个文件夹bin和lib,bin就是JVM,lib就是JVM工作所需要的类库。...
  • 史上最全Java初中级面试题,发现网上很多Java初级面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本人发现网上虽然有不少Java相关的面试题,但第一未必全,第二未必有...
  • Java中级面试题及答案【最新版及答案,干货!!!这是一个中级Java面试系列题中的第一部分。这一部分论述了可变参数,断言,垃圾回收,初始化器,令牌化,日期,日历等等Java核心问题。 Java中级面试永远是程序员...
  • Servlet面试题整理

    千次阅读 2020-07-11 18:50:38
    Servlet和JSP面试题整理 1. forward和redirect的区别? 地址栏显示不同,forward地址栏显示的是原来的地址,因为其是由服务器请求资源,直接访问目标地址的URL,并读取响应内容,然后将内容发送至浏览器,浏览器并...
  • 最新Java面试题,常见面试题及答案汇总

    万次阅读 多人点赞 2019-07-12 08:56:55
    Java最新面试题面试题答案汇总
  • 文件中包含了本人最近在网上总结的面试题,有java面试题,jq面试题,jsp、servlet、ajax面试题,mysql面试题,oracle面试题,redis教案,也有最近时间总结的公司面试题,涉及的层面虽然不是很多,但是应对面试 应该...
  • Java面试题大全(2020版)

    万次阅读 多人点赞 2019-11-26 11:59:06
    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java ...
  • Java面试题大全(2021版)

    万次阅读 多人点赞 2020-11-25 11:55:31
    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java基础知识面试题 1、Java概述 ①. 何为编程 ...
  • 企业的经典java面试题,Java面试题,jsp&servlet面试题
  • 1.Jsp经编译后成为servlet,(jsp本质上就是servlet类,jvm只能识别java类,不能识别jsp的代码,web容器将jsp的代码编译成jvm能识别的java 类) 2.Jsp更擅长页面显示,servlet更擅长与逻辑控制。 3.Servlet中没有内置...
  • 同花顺java面试笔试题Java、J2EE、JSP、Servlet、Hibernate 面试问答 如果您喜欢该项目,请单击。 拉取请求受到高度赞赏。 目录 问:异常的类型有哪些? 解释 Java Exception 类的层次结构? 异常是一种错误事件,它...
  • 2020最新Java常见面试题及答案

    万次阅读 多人点赞 2019-10-26 15:53:35
    Java最新常见面试题 + 答案汇总 1、面试题模块汇总 面试题包括以下十九个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、...
  • Java面试题及答案【最新版】Java高级面试题大全(2021版),发现网上很多Java面试题及答案整理都没有答案,所以花了很长时间搜集,本套Java面试题大全,Java面试题大汇总,有大量经典的Java面试题以及答案,包含Java...
  • java面试题

    2017-11-01 11:04:55
    Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。
  • 面试题Java常见面试题集锦

    千次阅读 2020-02-03 08:50:23
    Java常见面试题集锦 面试题模块 这份面试题,包含的内容了十九了模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate...
  • Java面试对象 Java基础库类 jdbc数据访问技术 Web编程Jsp&Servlet技术 Hibernate持久层技术 iBatis持久层技术 Structs界面控制技术 JSF界面控制技术 Spring应用框架技术 EJB技术 WebService技术 j2ee模式(MVC模式,...
  • 一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。 这既包括 servlet 又包括被编译成 servlet 的 JSP 页面。 request是代表与 Web 客户机发出的一个请求相关...
  • 面试题 如果您喜欢该项目,请单击。 拉取请求受到高度赞赏。 目录 问:异常的类型有哪些? 解释 Java Exception 类的层次结构? 异常是一种错误事件,它可能在程序执行期间发生并中断其正常流程。 Java 异常的类型 1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,947
精华内容 12,778
关键字:

javaservlet面试题

java 订阅