JavaEE笔试问答题

JavaEE笔试问答题
1.1请列举WEB项目的web.xml中您常用的标签参数,并简要说明功能。
XML Schema描述了XML文档的结构,web.xml的模式(Schema)文件中定义了多少种标签元素,web.xml中就可以出现它的模式文件所定义的标签元素,它就能拥有定义出来的那些功能。web.xml的模式文件是由Sun公司定义的,每个web.xml文件的根元素中,都必须标明这个web.xml使用的是哪个模式文件。

<?xml version="1.0" encoding="UTF-8"?>

指定欢迎页面

index.jsp
index1.jsp

上的例子指定了2个欢迎页面,显示时按顺序从第一个找起,如果第一个存在,就显示第一个,后面的不起作用。如果第一个不存在,就找第二个,以此类推。
关于欢迎页面:访问一个网站时,默认看到的第一个页面就叫欢迎页,一般情况下是由首页来充当欢迎页的。一般情况下,我们会在web.xml中指定欢迎页。但web.xml并不是一个Web的必要文件,没有web.xml,网站仍然是可以正常工作的。只不过网站的功能复杂起来后,web.xml的确有非常大用处,所以,默认创建的动态web工程在WEB-INF文件夹下面都有一个web.xml文件。
对于tomcat来说,当你只指定一个web的根名,没有指定具体页面,去访问时一个web时,如果web.xml文件中配置了欢迎页,那么就返回指定的那个页面作为欢迎页,而在文中没有web.xml文件,或虽然有web.xml,但web.xml也没指定欢迎页的情况下,它默认先查找index.html文件,如果找到了,就把index.html作为欢迎页还回给浏览器。如果没找到index.html,tomcat就去找index.jsp。找到index.jsp就把它作为欢迎页面返回。而如果index.html和index.jsp都没找到,又没有用web.xml文件指定欢迎页面,那此时tomcat就不知道该返回哪个文件了,它就显示The requested resource (/XXX) is not available(我就出现过这个问题)的页面。其中XXX表示web的根名。但如果你指定了具体页面,是可以正常访问的。

命名与定制URL

servlet1
net.test.TestServlet

servlet1 *.do url-pattern的意思是所有的.do文件都会经过TestServlet处理。 定制初始化参数 servlet1 net.test.TestServlet userName Tommy E-mail Tommy@163.com 经过上面的配置,在servlet中能够调用getServletConfig().getInitParameter("param1")获得参数名对应的值。 //上下文参数:声明应用范围内的初始化参数。 ContextParameter test It is a test parameter. //在servlet里面可以通过getServletContext().getInitParameter("context/param") 得到

指定错误处理页面,可以通过“异常类型”或“错误码”来指定错误处理页面。

404
/error404.jsp

java.lang.Exception /exception.jsp java.lang.NullException /error.jsp

设置过滤器:比如设置一个编码过滤器,过滤所有资源

XXXCharaSetFilter
net.test.CharSetFilter


XXXCharaSetFilter
/*

6.设置监听器
web.xml中的有什么用? 没别的用处!就是配置监听类的~,它能捕捉到服务器的启动和停止! 在启动和停止触发里面的方法做相应的操作! 它必须在web.xml 中配置才能使用! web.xml 中listener元素不是只能有一个,有多个时按顺序执行。
如何在web.xml向listener中传参数 ?

监听器类的完整路径

监听器中不能够写初始化参数; 可通过另个的途径达到初始化参数的效果: 1.写一个properties文件,在文件里写好初始化参数值, 2.在监听器中可以通得到properties文件中的值(写在静态块中)。

设置会话(Session)过期时间,其中时间以分钟为单位

60

1.2jsp有哪些内置对象?作用分别是什么?
JSP共有以下9个内置的对象:
request:表示HttpServletRequest对象,用户端请求。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。
response:表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等),网页传回用户端的回应
out:对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
pageContext:表示一个javax.servlet.jsp.PageContext对象。该对象提供了对JSP页面内所有的对象及名字空间(就是四大作用域空间,如page空间、request空间、session空间、application空间)的访问,也就是说他可以访问到当前请求对应session中保存的信息,也可以取当前应用所在的application的某一属性值,它相当于页面中所有功能的集大成者,包装了通用的servlet相关功能的方法。
session:表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息
applicaton:表示一个javax.servle.ServletContext对象。类似于系统的全局变量,用于实现Web应用中的资源共享。
config:表示一个javax.servlet.ServletConfig对象。用于存放JSP编译后的初始数据。
page:表示从该页面产生的一个servlet实例,JSP网页本身
exception:针对错误网页,未捕捉的例外。表示JSP页面运行时产生的异常和错误信息,该对象只有在错误页面(page指令中设定isErrorPage为true的页面)中才能够使用

1.3简单介绍你了解的MVC。
MVC的全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范。它是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件里面,在需要改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码的时间。
V即View视图是指用户看到并与之交互的界面。比如由html元素组成的网页界面,或者软件的客户端界面。MVC的好处之一在于它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,它只是作为一种输出数据并允许用户操纵的方式。
M即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
三者之间的调用关系。

1.4Servlet的生命周期。
Servlet生命周期:
1、Servlet 通过调用 init () 方法进行初始化。
2、Servlet 调用 service() 方法来处理客户端的请求。
3、Servlet 通过调用 destroy() 方法终止(结束)。
4、最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
如下图所示:

下图显示了一个典型的 Servlet 生命周期方案。
1、第一个到达服务器的 HTTP 请求被委派到 Servlet 容器。
2、Servlet 容器在调用 service() 方法之前加载 Servlet。
3、然后 Servlet 容器处理由多个线程产生的多个请求,每个线程执行一个单一的 Servlet 实例的 service() 方法。

1.5Jsp中如何包含一个静态文件。
JSP中的两种包含页面的方法
第一种:include指令:当JSP转换成Servlet时引入指定文件
<%@ page contentType=“text/html; charset=GB2312” language=“java” errorPage=""%>
<%@ include file=“head.jsp”%>
<%@ include file=“body.jsp”%>
<%@ include file=“tail.jsp”%>

第二种:jsp:include动作元素:当JSP页面被请求时引入指定文件
<%@ page contentType=“text/html; charset=GB2312” language=“java” errorPage=""%>
<jsp:include page=“head.jsp”/>
<jsp:include page=“body.jsp”/>
<jsp:include page=“tail.jsp”/>

第二种方法可以很方便的用jsp:param来向所包含页传递参数,方法如下:
<%@ page contentType=“text/html; charset=GB2312” language=“java” errorPage=""%>
<jsp:include page=“head.jsp”/>
<jsp:include page=“body.jsp”>
<jsp:param name=“uid” value=“username”/>
<jsp:param name=“pwd” value=“password”/>
</jsp:include>
<jsp:include page=“tail.jsp”/>

1.6Java Servlet API中的forward和redirect有什么区别。
request.getRequestDispatcher(“apage.jsp”).forward(request, response);//转发到apage.jsp
response.sendRedirect(“apage.jsp”);//重定向到apage.jsp
1.从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.
2.从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.
3.从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.
4.从效率来说
forward:高.
redirect:低.

用重定向和转发不是一个习惯问题。而是什么情况下必须用什么的问题。
不要仅仅为了把变量传到下一个页面而使用session作用域,那会无故增大变量的作用域,转发也许可以帮助你解决这个问题。
重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域。
转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起。
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址, web应用程序会要求客户端浏览器重新发出请求地址,客户端会重新连接至所指定的地址,因此浏览器的地址会出现重新导向的信息,重新导向后的请求由浏览器发出。
forward与include共享Request范围内的对象,而redirect则不行,
forward与include基本上都是转发到context内部的资源,而redirect可以重定向到外部的资源

1.7MVC的各个部分有哪些技术实现,如何实现?
视图层用jsp,javascript
作用–显示数据,接受用户输入数据
控制层用servlet
作用–接收视图层数据,传输 给业务逻辑层(即模型层)
模型层用普通java class
作用–业务类的实现,如:数据库操作
M(DAO)层,就相当于后台,
V(jsp),相当于前台,
C(control)层,相当于控制页面跳转;
MVC模s式的目的就是实现Web系统的职能分工。
Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。
View层用于与用户的交互,通常用JSP来实现。

Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。

M:hibernate、mybatis、ibatis
C:severlet、struts、spring、action
V:jsp、FreeMarker、tails、taglib、EL、Velocity

1.8JSP有哪些动作,作用分别是什么?
JSP共有以下6种基本动作
  1. jsp:include:在页面被请求的时候引入一个文件。
  2.jsp:useBean:寻找或者实例化一个JavaBean。
  3.jsp:setProperty:设置JavaBean的属性。
  4. jsp:getProperty:输出某个JavaBean的属性。
  5. jsp:forward:把请求转到一个新的页面。
  6.jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记。

1.9JSP中动态include和静态include的区别?
一、静态包含指令<%@include file=“fileurl”%>
1.两个jsp页面的<%@page contentType=“text/html;charset=gbk”%>应该保持一致
2.不能通过fileurl向被包含的jsp页面传递参数,因为此静态包含是发生在jsp页面转换为servlet的转换期间,此时的参数是服务器端设置的死的参数,完全没有经过客户端,这种参数是没有意义的,如<%@include file=“fileurl?user=admin”%>,而且此时会报错。
3.包含的jsp页面与被包含的jsp页面共用一个request内置对象。
4.比如说在客户端访问包含页面时地址栏后面直接加上参数后传递,这种形式的传参是客户端送来的,两个页面都能够访问此参数。我们可以通过这两个页面合成的servlet中可以看到有传递的参数成为servlet的成员变量。
5.包含的jsp页面与被包含的jsp页面最好没有重复的html标签。否则会发生覆盖现象。
二、动态包含与静态包含<%@include file=“fileurl”%>的区别
1.动态包含用的元素是page,而且有两种形式。静态包含用的是file,只有一种形式。
2.生成的文件不同,静态的包含是将两个jsp文件二合一,生成一个以包含页面命名的servlet和class文件,动态包含的两个jsp文件各自生成自己的servlet和class文件。
3.传参方式一:<jsp:include page=“a.jsp?param=123”/>时被包含的jsp页面是可以访问该参数的。
4.传参方式二:
<jsp:include page=“a.jsp”>
<jsp:param name=“” value=“”>
<jsp:param name=“” value=“”>
</ jsp:include >
5. 在客户端访问包含页面时地址栏后面直接加上参数后传递,这种形式的传参是客户端送来的,但是这两个页面的request对象不是同一个,因为3中已经说了包含的页面可以向被包含的页面传递参数,所以被包含的request对象含的参数个数应该大于等于包含页面的参数个数的。所以它们各有各的request对象。而且被包含的jsp页面可以访问传到包含页面的参数。
6. 动态包含只有在执行到它的时候才加载,所以它才叫动态包含。
另一种简答说法:
1.动态INCLUDE用jsp:include动作实现<jsp:include page = included.jsp flush = “true”>它总会检查所含文件中的变化,适用于动态页面并且可以带参数。
2.静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%&

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值