测试题01(答案详析)

1. jsp有哪些内置对象?作用分别是什么
内置对象对应Servlet类作用
requestjavax.servlet.http.HttpServletRequest客户端的请求信息:Http协议头信息、Cookie、请求参数等
responsejavax.servlet.http.HttpServletResponse用于服务器响应客户端请求返回数据
pageContextjavax.servlet.jsp.PageContext页面的上下文
sessionjavax.servlet.http.HttpSession客户端与服务器之间的会话
applicationjavax.servlet.ServletContext用于获取服务器应用生命周期的信息
outjavax.servlet.jsp.JspWriter用于服务器传输内容到客户端的输出流
configjavax.servlet.ServletConfig初始化时,JSP引擎向JSP页面传递的信息
pagejava.lang.Object指向JSP页面本身
exceptionjava.lang.Throwable页面发生异常,产生的异常对象
2. 说一下jsp的4种作用域
  1. 所谓“作用域”就是“信息共享的范围”,也就是说一个信息能够在多大的范围内有效。4个JSP内置对象作用域分别为:application、session、request、page(作用范围依次减小)
名称作用域
application在所有的应用程序中有效
session在当前会话中有效
request在当前请求中有效
page在当前页面有效
  1. Web交互的最基本单位为HTTP请求。每个用户从进入网站到离开网站这段过程称为一次HTTP会话,一个服务器的运行过程中会有多个用户访问,就是多个HTTP会话。
2.1 application 作用域
  1. 如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。
  2. 整个应用是指从应用启动,到应用结束。我们没有说“从服务器启动,到服务器关闭”,是因为一个服务器可能部署多个应用,当然,你关闭了服务器,就会把上面所有的应用都关闭了。
  3. application作用域里的变量,他们的存活时间是最长的,如果不进行手工删除,它们会一直可以使用。
  4. application 作用域上的信息传递是通过ServletContext实现的,它提供的主要方法如下:
    Object getAttribute(String name) //从application中获取信息
    void setAttribute(String name,Object value) //向application 作用域中设置信息
2.2 session 作用域
  1. session 作用域比较容易理解,同一浏览器对服务器进行多次访问,在这多次访问之间传递信息,就是session作用域的体现。如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。
  2. 所谓当前会话,就是指用户打开浏览器开始,到用户关闭浏览器之间的过程。
  3. 这个过程可能包含多个请求响应。也就是说,只要用户不关闭浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一次会话(session),而放到会话中的变量就可以在当前会话的所有请求里使用。
  4. session 是通过HTTPSession接口实现,它提供的主要方法如下:
    Object HTTPSession.getAttribute(String name) //从设施死你中获取信息
    void HttpSession.setAttribute(String name,Object value) //向session中保存信息
    HttpSession HttpServletRequest.getSession() //获取当前请求所在的session的对象
  5. session的开始时刻比较容易判断,它从浏览器发出第一个HTTP请求即可认为会话开始,但结束时刻就不好判断了,因为浏览器关闭时并不会通知服务器,所以只能通过如下这种方法判断:如果一定时间内客户端没有反应,则认为会话结束。Tomcat的默认值为120分钟,但这个值可以通过HttpSession的setMaxInactiveInterval()方法来设置:
    void setMaxInactiveInterval(int interval)
    如果想主动让会话结束,例如用户单击“注销”按钮的时候,可以使用HttpSession 的invalidate() 方法,用于强制结束当前session:void invalidate()
2.3 request 作用域
  1. 一个Http请求的处理可能需要多个Servlet合作,而这几个Servlet之间可以通过某种方式传递信息,但这个信息在请求结束后就无效了。request里的变量可以跨越forward前后的两页,但是只要刷新页面,它们就重新计算了。

  2. 如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。

  3. 所谓请求周期,就是值指从http请求发起,到服务器处理结束,返回响应的整个过程。在这个过程中可能使用forward的方式跳转了多个jsp页面,在这些页面里你都可以使用这个变量。

  4. Servlet之间的信息共享是通过HttpServletRequest接口的两个方法来实现的:
    void setAttribute(String name, Object value) //将对象value以name为名称保存到request作用域中。

     Object getAttribute(String name) //从request作用域中取得指定名字的信息。
    
  5. JSP中的doGet()、doPost()方法的第一个参数就是HttpServletRequest对象,使用这个对象的 setAttribute()方法即可传递信息。那么在设置好信息之后,要通过何种方式将信息传给其他的Servlet呢?这就要用到RequestDispatcher接口的forward()方法,通过它将请求转发给其他Servlet。
    RequestDispatcher ServletContext.getRequestDispatcher(String path) //取得Dispatcher以便转发,path为转发的目的Servlet。
    void RequestDispatcher.forward(ServletRequest request, ServletResponse response)//将request和response转发

  6. 因此,只需要在当前Servlet中先通过setAttribute()方法设置相应的属性,然后使用forword()方法进行跳转,最后在跳转到的Servlet通过使用getAttribute()方法即可实现信息传递。

  7. 注意:

    转发不是重定向,转发是在Web应用内部进行的。
    转发对浏览器是透明的,也就是说,无论在服务器上如何转发,浏览器地址栏中显示的仍然是最初那个Servlet的地址。

2.4 page 作用域
  1. page对象的作用范围仅限在用户请求的当前页面,对于page对象的引用将在响应返回给客户端之后被释放,或者在请求被转发到其他地方后被释放。
  2. page里的变量只要页面跳转了。它们就销毁了。
  3. 如果把变量放pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里。从把变量放到pageContext开始,到jsp页面结束,你都可以用这个变量。
  4. request和page的生命周期都是短暂的,它们之间的区别:一个request可以包含多个page夜(include、forward及filter)
3. Maven的三个构建生命周期是什么?
  1. Maven 的一个核心理念,Build Lifecycle,构建生命周期,明确地定义了一个项目构建跟发布的过程。
  2. Maven有三个内建的构建的生命周期:default,clean和site
		default:项目部署的处理
		clean:项目清理的处理
		site:项目站点文档创建的处理
  1. 构建生命周期都由不同的阶段(Phase)构成
    例如:default 生命周期由以下阶段构成:
    validate:验证项目是否正确且所有必须信息是可用的
    compile:编译项目源码
    test:使用合适的测试框架对编译好的源码尽心测试,这些测试不应要求源码被打包或部署
    package:根据指定的格式打包编译好的源码,如JAP
    verify:对集成测试的结果进行检查,以保证质量达标
    install:安装打包的项目到本地仓库,以供其他项目使用
    deploy:在构建环境中完成,将最后的包复制到远程仓库,以便与其他开发人员和项目共享
  2. 为了完成default生命周期,这些阶段(包括其他未在上面罗列的生命周期阶段)将被按顺序地执行。
  3. 命令行调用:在开发环境中,使用 mvn install 、mvn clean deploy等命令进行构建,安装工程到本地仓库
4. #{}和${}的区别是什么?
  1. #{} ?占位符
    select * from user where username=#{name}
    select * from user where username=?
  2. 字 符 串 拼 接 s e l e c t ∗ f r o m u s e r w h e r e u s e r n a m e = ′ {} 字符串拼接 select * from user where username=' selectfromuserwhereusername={name}’
    PreparedStatement/Statement
5. jQuery中的常用选择器有哪些,至少5种
			1. ID选择器 #id
			描述:根据给定的id匹配一个元素, 返回单个元素(注:在网页中,id名称不能重复)
			示例:$("#test") 选取 id 为 test 的元素
			2. 类选择器 .class
			描述:根据给定的类名匹配元素,返回元素集合
			示例:$(".test") 选取所有class为test的元素
			3. 元素选择器 element
			描述:根据给定的元素名匹配元素,返回元素集合
			示例:$("p") 选取所有的<p>元素
			4. *
			描述:匹配所有元素,返回元素集合
			示例:$("*") 选取所有的元素
			5. selector1,selector2,...,selectorN
			描述:将每个选择器匹配到的元素合并后一起返回,返回合并后的元素集合
			示例:$("p,span,p.myClass") 选取所有<p>,<span>class为myClass的<p>标签的元素集合
6. Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?

可以

7. String s1 = “123”;这个语句有几个对象产生?一个
7.1 String s2 = new String(“123”),又创建了几个对象?两个(两个语句)

s1 == s2 false
String s3 = “123”
s1 == s3 true
String s4 = new String(“123”);
s2 == s4 false

8. Servlet的生命周期

构造对象—>init->service->doGet/doPost->destroy

9. Maven 的常用命令

clean :清理
compile:编译
test:测试
package:打包
install:安装
deploy:部署

10. maven 常见的依赖范围有哪些?
包名:公司域名.项目名.模块名称
com.fy.myshop.user.controller

<groupId>com.fy</groupId>
<artifactId>myshop</artifactId>
<version>0.0.1.SNAPTSHOT</version>
<scope>compile</scope>

maven的依赖范围包括: compile,provide,runtime,test,system。

compile:表示编译范围,指A在编译时依赖B,该范围为默认依赖范围。编译范围的依赖会用在编译,测试,运行,由于运行时需要,所以编译范围的依赖会被打包。

provide:provide依赖只有当jdk或者一个容器已提供该依赖之后才使用。provide依赖在编译和测试时需要,在运行时不需要。例如:servlet api被Tomcat容器提供了。

runtime:runtime依赖在运行和测试系统时需要,但在编译时不需要。例如:jdbc的驱动包。由于运行时需要,所以runtime范围的依赖会被打包。

test:test范围依赖在编译和运行时都不需要,只在测试编译和测试运行时需要。例如:Junit。由于运行时不需要,所以test范围依赖不会被打包。

system:system范围依赖与provide类似,但是必须显示的提供一个对于本地系统中jar文件的路径。一般不推荐使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值