关于JavaWeb面试

什么是JavaWeb?

Java web  是指有Java语言开发出来可以在万维网上访问浏览的程序。

Java Web,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。

Java在客户端的应用有java applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架等等。

Java技术对Web领域的发展注入了强大的动力。

1.说出Servlet 的生命周期,并说出Servlet 和CGI 的区别? 【基础】

答:Web 容器(Tomcat)加载Servlet 并将其实例化后,Servlet 生命周期开始,容器运行其init 方法进行Servlet 的初始化,请求到达时运行其service 方法,service方法自动派遣运行与请求对应的doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy 方法。与cgi 的区别在于servlet 处于服务器进程中,它通过多线程方式运行其service 方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI 对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

2.Servlet 的基本架构。【基础】

答: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 {

    }
}

3.forward 和redirect 的区别? 【基础】

答:forward 是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL,把那个URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以 它的地址栏中还是原来的地址。redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request 参数都可以获取,并且从浏览器的地址栏中可以看到跳转后的链接地址。前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接;在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

4.JSP 中动态INCLUDE 与静态INCLUDE 的区别?【基础】

答:动态INCLUDE 用jsp:include 动作实现<jsp:include page="included.jsp"flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数;静态INCLUDE 用include 伪码实现,它不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>

5.说出数据连接池的工作机制是什么? 【基础】

答:J2EE 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。

6.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可以存贮用户的状态信息。application 表示一个javax.servle.ServletContext 对象。这有助于查找有关servlet 引擎和servlet 环境的信息。config 表示一个javax.servlet.ServletConfig 对象。该对象用于存取servlet 实例的初始化参数。page 表示从该页面产生的一个servlet 实例。

7.JSP 的常用指令?【基础】

答:<%@page language=”java” contenType=”text/html;charset=gb2312”session=”true” buffer=”64kb” 
autoFlush=”true” isThreadSafe=”true”info=”text” errorPage=”error.jsp” 
isErrorPage=”true” isELIgnored=”true” pageEncoding=”gb2312” import=”java.sql.*”%>
isErrorPage:是否能使用Exception 对象;isELIgnored:是否忽略EL 表达式;
<%@include file=”filename”%><%@taglib prefix=”c”uri=”http://……”%>

8.jsp 有哪些内置对象?作用分别是什么? 【基础】

答:JSP 共有以下9 种基本内置组件(可与ASP 的6 种内部组件相对应):

request:用户端请求,此请求会包含来自GET/POST 请求的参数;

response:网页传回用户端的回应;

pageContext:网页的属性是在这里管理;

session:与请求有关的会话期;

application:servlet 正在执行的内容;

out:用来传送回应的输出;

config:servlet 的构架部件;

page:JSP 网页本身;

exception:针对错误网页,未捕捉的例外。

9.get 和post 的区别?【基础】

答:Form 中的get 和post 方法,在数据传输过程中分别对应了HTTP 协议中的GET 和POST 方法。二者主要区别如下:

1)Get 是用来从服务器上获得数据,而Post 是用来向服务器上传递数据;

2)Get 将表单中数据按照variable=value 的形式,添加到action 所指向的URL 后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post 是将表单中的数据放在form 的数据体中,按照变量和值相对应的方式,传递到action所指向URL;

3)Get 是不安全的,因为在传输过程,数据被放在请求的URL 中;Post 的所有操作对用户来说都是不可见的;

4)Get 传输的数据量小,这主要是因为受URL 长度限制;而Post 可以传输大量的数据,所以在上传文件只能使用Post;

5)Get 限制Form 表单的数据集必须为ASCII 字符,而Post 支持整个ISO10646字符集;

6)Get 是Form 的默认方法。

10.详细描述MVC。【基础】

答:基于Java 的Web 应用系统采用MVC 架构模式,即model(模型)、view(视图)、control(控制)分离设计;这是目前WEB 应用服务系统的主流设计方向。

作用:
1.pageContext
表示页容器 EL、标签、上传
2.request
服务器端取得窗户端的信息:头信息、Cookie、请求参数
3.response
服务器回应给客户端信息,Cookie,重定向
4.session
表示每一个用户,用于登陆验证上
5.application
表示整个服务器,getRealPath()
6.config
取得初始化参数,初始化参数在web.xml中配置
7.exception 表示是错误页的处理操作
8.page
如同this一样,表示整个jsp页面
9.out 输出,但是尽量使用表达式输出


2.JSP中有哪些动作,分别是什么。
所谓的动作实际上就是指的标签指令
<jsp:include>:包含
<jsp:forward>:跳转
<jsp:useBean>:使用javaBean
<jsp:getProperty>:取得属性
<jsp:setProperty>:设置属性,通过反射调用方法
<jsp:plugin>: 插入Applet程序代码


3.JSP中动态include与静态include的区别?
动态include:<jsp:include>,如果包含的是动态页,则先编译之后再进行处理
静态include:<%@include%>,直接将内容先包含后处理


4.两种跳转方式分别是什么?有什么区别?
 服务器端跳转:<jsp:forward>,跳转之后地址栏不改变,可以传递request 属性,实际是对RequestDispatcher接口的封装
客户端跳转:response.sendRedirect(),跳转之后地址栏改变


5、请总结一下WEB开发中的会话跟踪实现
1.session,也是最常用的一种
2.Coolie
3.地址重写
4.隐藏域


6、在Web开发中需要处理HTML时,应做什么样的处理,要筛选那些字符< > ' & 
&lt; & gt; &amp;等等


7.说明JSP中errorPage的作用、应用范围
表示错误页的操作,在一般的站点,只要一个程序出现了错误,就是产生了异常,则可以统一跳转到一个页面上进行显示,那么这种操作就属于错误页的处理,但是简单的错误页基本上都是在JSP的开发中使用的。
要想进行错误页的设置,需要满足以下两个条件:
1.在错误能够处理的页上的page指令中,增加:isErrorPage="true"
2.在每一个页面指定errorPage,指定isErrorPage为true的页面
<error-page>
<error-code>404</error-code>
<location>/errors.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/errors.jsp</location>
</error-page>


8.写一个连接Oracle数据库的例子
PDF中


9.简述在JSP中是如何实现分页操作的。
首先一定要确定的是分页有两种:
真分页:性能较高,是基于数据库的操作,只是从数据库中取出部分的数据进行显示,所以性能高,但是可移植性低。
假分页:性能较低,是将全部的结果查询出来,之后依靠算法分页,只显示部分数据


实现原理:
定义一系列的变量:currentPage, lineSize, 并通过查询求了allRecorders和计算求出pageSize pageSize=(AllRecorders  + lineSize - 1)/lineSize
之后数据库查询语句中根据lineSize和currentPage进行数据的查询
Oracle中使用ROWNUM,mysql中使用limit()
之后通过表单不断的修改currentPage, lineSize就可以实现分页显示


10.介绍在JSP中如何使用JavaBean
JavaBean的格式要求:必须有包、public class 声明、属性封装、无参构造、settergetter
import 语句导入或者通过<jsp:useBean>


11.说一说Servlet的生命周期
初始化,正常一次:对应init()方法,有两个init()其中一个是有ServletConfig对象,此方法存在则无参不调用,正常情况下第一次使用Servlet的时候才进行初始化的操作,当然也可以通过配置在容器启动的时候自动进行初始化<load-on-startup>
服务,服务多次:所有的服务器都由services()方法分配,主要有doGet()和doPost(),分别处理get和post请求
销毁,正常一次,调用destory()方法,如果一个Servlet长时间不用,也会自动销毁,而当再次使用的时候就必须重新进行初始化的操作


12.Servlet中forward()与redirect()的区别?
forward()方法是RequestDispatcher接口定义的,而redirect是response定义的,一个是服务器端跳转,另外一个是客户端跳转


13.MVC的各个部分都有哪些技术来实现?如何实现?
MVC:model view controller
model:JavaBean 业务处理、数据处理
view:显示的事JSP,最好不存在任何的scriptlet,可以使用标签消除
controller:控制,接收view传递的内容和调用javaBean,并根据javaBean的处理结果进行跳转
实现原理:所有的JSP将内容提交给Servlet,servlet接收这些内容并调用相应的JavaBean进行业务及数据的处理,一般javabean有专人负责开发,完成业务的操作流程,而servlet调用的只是接口,并根据这些接口的操作结果将内容交给JSP运行显示,但是显示的时候尽可能少出现Scriptlet代码


14.简述国际化程序的实现思路。
Locale属性文件、ResourceBunder
国际化程序的实现、是根据本机的操作系统的语言类型,选择不同的属性文件,所有程序的基本代码一样,但是文字显示不一定,所以将内容作用属性文件出现之后,可以只显示属性文件中的文字


15.描述JSP和Servlet的区别、共同点、各自应用的范围
先有的Servlet再有的JSP,Servlet是在java中嵌入HTML代码,而JSP是在HTML中嵌入JAVA代码
共同点:JSP可以完成的功能,Servlet都可以完成,但是对于过滤器、监听器只能由Servlet完成
应用范围:JSP用于显示,Servlet用于控制


16.简述web.xml的作用
属于部署描述符,在整个JAVA中只要是容器都会存在部署描述符,此部署描述符可以控制整个WEB中各个组件的运行状态,也可以配置整个窗口的状态
<error-page> <welcome-file-list> <servlet> <session-timeout><filter>

Model:即处理业务逻辑的模块,每一种处理一个模块;

View:负责页面显示,显示MODEL 处理结果给用户,主要实现数据到页面转换过程;

Control:负责每个请求的分发,把FORM 数据传递给MODEL 处理,把处理结果的数据传递给VIEW 显示。

原文地址:https://www.cnblogs.com/dzcici/p/10416545.html