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动作标签<jsp:useBean>

  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,它们是:
  • <jsp:useBean>,声明和创建JavaBean
  • <jsp:setProperty>,为JavaBean的属性设置值
  • 用<jsp:getProperty>,获得JavaBean的属性值

42.如何使用迭代标签<c:forEach>循环显示数据

  • 语法:
    1. 使用begin和end属性进行整数范围迭代
      <c:forEach begin="20" end="50" var="i" step="2">
      偶数:<c:out value="${i}"/>

      </c:forEach>
    2. 使用items和var属性进行集合迭代
      <table>
      <tr>
      <th>编号</th>
      <th>用户名</th>
      <th>年龄</th>
      <th>性别</th>
      </tr>
      <c:forEach items="${users}" var="user" varStatus="status">
      <tr>
      <th>编号</th>
      <th>用户名</th>
      <th>年龄</th>
      <th>性别</th>
      </tr>
      </c:forEach>
      </table>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,635评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,628评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,971评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,986评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,006评论 6 394
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,784评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,475评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,364评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,860评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,008评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,152评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,829评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,490评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,035评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,428评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,127评论 2 356

推荐阅读更多精彩内容