Java面试题集锦09—Web开发相关技术

32.什么是Servlet
Servlet在Java Web服务器中就充当了信息资源的最小表示单位,代表了一个用户可以通过浏览器获取的资源。Servlet可以进行无限的扩展,它可以使用Java的所有类库资源,为用户返回文本、图片、音频、视频等各类信息资源。
从编程角度来看,Servlet是一个Java类,这个类需要实现Servlet接口,提供一个公开的无参数的构造方法。由Web容器来控制它的创建、初始化、提供服务、销毁等。它的各种行为方式通过在web.xml文件中的配置来决定

33.Servlet的生命周期是怎么样的
Servlet的生命周期分为4个阶段:加载、初始化、提供服务和销毁,这些过程都是由Web容器来掌控。开发者关注最多的是初始化和提供服务两个阶段,在init()方法中,开发者可以获取配置在web.xml中的初始化参数service()方法中的代码,会在Servlet的请求来到时被调用。

34.Servlet接口有哪些实现类
在Java EE的SDK中,一共提供了以下3个Servlet接口的实现类

  • javax.faces.webapp.FacesServlet。用于JSF的Servlet,一般很少使用
  • javax/servlet.GenericServlet。它是一个抽象类,不能直接使用,它提供了除server()方法以外的所有抽象方法的默认实现,可用于一般的Servlet开发。
  • javax.servlet.http.HttpServlet。该类是开发者使用最多的一个类,它不但提供了所有抽象方法的默认实现,还提供了不同的方法以区分不同类型的HTTP请求,例如doPost()、doGet()等。

35.如何在Servlet中获取请求参数的值
在Servlet中,任何负责做出响应的方法(例如,service()、doPost()和doGet())都会包含一个ServletRequest对象参数,不管是POST还是GET的请求方式,Servlet都可以通过ServletRequest接口的getParameter()或getParameterValues()方法获取到。前者适用于只有一个值的参数,后者多用于有多值的参数,例如,复选框(checkbox)

//获取参数名为username的用户名,返回字符串   
String username = request.getParameter("username");
//获取参数名为password的密码,返回字符串
String password = request.getParameter("password");
//获取参数名为hobby的爱好数组,返回的是字符串数组
String[ ] hobbies = request.getParameterValues("hobby");

36.Forward(转发)和Redirect(重定向)的区别
Forward和Redirect代表了两种请求转发方式:直接请求转发和重定向。对应到代码里,分别是RequestDispatcher类的forward()方法和HttpServletResponse类的sendRedirect()方法。在Servlet中调用转发和重定向的语句如下:

request.getRequestDispatcher("new.jsp").forward(request,response);//转发
response.sendRedirect("new.jsp");        //重定向
  1. 转发是服务器行为;重定向是客户端行为
  2. 转发行为浏览器只做一次访问请求;重定向行为浏览器做至少两次的访问请求。
  3. 转发只能将请求转发给同一个Web应用中的组件;而重定向不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。
  4. 转发方法请求转发过程结束后,浏览器地址栏保持初始的URL地址;重定向访问过程结束后,浏览器地址栏由初始的URL地址变成重定向的目标URL。
  5. 转发方法的调用者与被调用者之间共享相同的request对象和response对象,它们属于同一个访问请求和响应过程;而重定向的调用者与被调用者使用各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。

37.过滤器的作用和工作原理是什么
对于Web应用程序来说。过滤器是处于Web容器内的一个组件,它会过滤特定请求资源请求信息和响应信息。一个请求来到的时候,Web容器会判断是否有过滤器与该信息资源关联,如果有,则交给过滤器一一的处理,然后再交给目标资源,响应的时候则以相反的顺序交给过滤器处理,最后再返回给用户浏览器。
过滤器对应Filter接口,开发者一般需要实现doFilter()方法,并在web.xml文件夹中提供相应的配置。

38.监听器的作用和工作原理是什么
对于Web应用程序来说,监听器是处于Web容器内的一个组件,它会对Web容器中的3种范围对象进行监听:request、session和application。当这些范围对象在创建或销毁的时候,Web容器会主动的调用它们的初始化或销毁的回调方法,从而达到事件响应的效果。根据范围的不同,JavaEE为开发者提供了如下一些监听器接口。

  • Request事件监听器接口ServletRequestListener
  • Session事件监听器接口HttpSessionListener
  • Application事件监听器接口ServletContextListener

39.JSP的运行机制是什么
当客户端发出一次对某个JSP的请求,Web容器处理该请求的过程如下:

  1. Web容器会检验JSP的语法是否正确
  2. 将JSP文件转换成Servlet的源码文件
  3. 编译该源码文件成为Class文件
  4. 创建一个该Servlet类的对象实例,以Servlet的方式为请求提供服务

40.JSP的内置对象及其用途

  • application:它代表了整个Web应用程序,与Servlet上下文是同一个概念
  • session:Http会话对象
  • request:请求对象
  • response:返回对象
  • out:写出流对象,用于返回数据给客户端
  • page:普通的页面对象
  • pageContext:页面上下文,代表页面的一个运行环境,通过它可以获取到其他对象,如会话、请求等
  • exception:用于错误页面,通过该对象可获得异常的详细信息
  • config:配置对象,用于获取初始化参数等数据

41.JSP如何使用JavaBean
JSP使用JavaBean有两种方式:夹杂在HTML中的JSP脚本和JSP动作标签

  1. 纯JSP实现
    这种方式采用的是纯粹的Java代码来创建JavaBean对象和使用JavaBean,此时的JavaBean跟一个普通类没什么区别,示例代码如下:
    <%
    HelloBean bean = new HelloBean(); //创建HelloBean对象
    pageContext.setAttribute("helloBean", bean); //把bean放在page范围中
    %>
    <%
    HelloBean bean2 = pageContext.setAttribute(); //获得HelloBean对象
    response.write(bean2.getName()); //使用bean
    %>
  2. 用JSP动作标签访问JavaBean
    为了简化JavaBean的使用,JSP还提供了一组动作标签来帮助开发者使用JavaBean,它们是:
  • ,声明和创建JavaBean
  • ,为JavaBean的属性设置值
  • ,获得JavaBean的属性值

42.如何使用迭代标签循环显示数据

  • 语法:
    1. 使用begin和end属性进行整数范围迭代

      偶数:

    2. 使用items和var属性进行集合迭代















      编号 用户名 年龄 性别
      编号 用户名 年龄 性别

你可能感兴趣的:(Java面试题集锦09—Web开发相关技术)