JSP

JSP

1. JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?

 		1. jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)
          		2. jsp更擅长表现于页面显示,servlet更擅长于逻辑控制.
            		3. Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到.

Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。而Servlet则是个完整的Java类,这个类的Service方法用于生成对客户端的响应。
联系: JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

2. JSP页面元素包含哪些?

  1. 静态内容
    就是html,css,javascript等内容
  2. 指令
    以<%@开始 %> 结尾,比如<%@page import=“java.util.*”%>
  3. 表达式 <%=%>
    用于输出一段html
  4. Scriptlet
    在<%%> 之间,可以写任何java 代码
  5. 声明
    在<%!%> 之间可以声明字段或者方法。但是不建议这么做。
  6. 动作
    <jsp:include page=“Filename” > 在jsp页面中包含另一个页面。在包含的章节有详细的讲解
  7. 注释 <%-- – %>
    不同于 html的注释 通过jsp的注释,浏览器也看不到相应的代码,相当于在servlet中注释掉了

3. 转发和重定向有何区别?

​ 转发的过程:
​ 客户端浏览器发送请求,web服务器接收请求再进行在内部跳转,什么意思呢,也就是说,跳转只能在自己所在的web容器下的url,而不能跳转出去其他的url。
​ 重定向的过程:
​ 客户端发送请求,web服务器接收该请求后发送302状态码响应并且发送新的一个地址(location)给客户端浏览器,客户端接收到302则自动再发送一个新的请求,而这个请求就是新的location,既然是客户端发送的一个请求,就对web容器的request没关系了,它可以任意跳转到所有location。
​ 其实它们最本质的区别就是,转发只需要一次的请求,仅仅是一次客户端的request,而重定向则需要两次请求,一次是客户端request,服务器响应后返回302给客户端浏览器,再由客户端浏览器再发一次请求。

4. JSP的常用内置对象有哪些,分别是什么作用?

  1. request对象 客户端请求,此请求包含来自GET/POST的请求参数,通过它才能了解到客户的需求,然后做出相应。
  2. response对象 响应客户端的请求的有关信息。
  3. session对象 它之客户端与服务起的一次会话,从客户端到服务器的一个WebApplication开始,直到客户端与服务器的链接断开为止。
  4. out 对象 它是JspWriter类的实力,是向客户端输出内容常用的对象
  5. page对象 它指当前JSP页面本身,有点类似this指针,它是java.lang.object类的一个实例
  6. applicationd对象 它实现用户间的数据共享,可以改变全局变量,它从服务器启动开始直到服务器关闭。
  7. exception对象 它是一个例外对象当一个页面的运行过程中发生了例外,就产生这个对象。
  8. pageContext对象 它提供了对JSP页所有对象及名字空间的访问。
  9. config对象 它是在一个Servlet初始化时,JSP引擎向它传递信息用的。

5. 什么是EL和JSTL,EL的语法是什么?JSTL常用的标签及其语法是什么?
EL是JSP表达式语言,全称是Expression Language,是一套简单的运算规则,用于给jsp标签的属性赋值,也可以脱离jsp标签直接使用。
语法结构:${ }
JSTL全程是Java Server Pages Standard Tag Library,JSTL是JSp标准标签库的简称,它提供的标签能一定程度上代替java代码。
<c:set var=”变量名 ” value=”变量值“ scope=”作用域”>/c:set //定义变量
<c:remove var=”变量名” scope=”作用域”>/c:remove //删除变量
<c:out value=”{sessionScope.str}“ ></c:out> //显示变量
<c:froeach items=”变量值” val=”变量名”></c:foreach>//迭代
<c:if test={条件}>/c:if//逻辑

6. 什么是AJAX,使用原生JS 发送ajax的步骤是什么?

AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

  1. 创建XMLHttpRequest对象
  2. 通过XMLHttpRequest对象的onreadystatechange属性设置回调函数,监听服务器的响应状态并做相应处理。
  3. 通过XMLHttpRequest对象的open()方法设置请求的发送方式和路径
  4. send()方法发送请求。

7. 列举Jquery中实现ajax的主要方法有哪些?

​ $.get(地址,数据,回调函数,返回的数据类型)

​ $.post(地址,数据,回调函数,返回的数据类型)

​ $.getJSON(地址,数据,回调函数)

​ $.ajax([settings])

8. PreparedStatement和Statement相比,具有什么优势?

  1. 提高了代码的可读性和可维护性
  2. 提高了SQL语句执行的性能。
  3. 提高了安全性,避免SQL注入。

9. 什么是DAO模式,使用该模式有哪些优势

​ DAO (DataAccessobjects 数据存取对象)是指位于业务逻辑和持久化数据之间实现对持久化数据的访问。通俗来讲,就是将数据库操作都封装起来。

​ DAO 模式提供了访问关系型数据库系统所需操作的接口,将数据访问和业务逻辑分离对上层提供面向对象的数据访问接口。

​ 1、隔离了数据访问代码和业务逻辑代码。业务逻辑代码直接调用DAO方法即可,完全感觉不到数据库表的存在。分工明确,数据访问层代码变化不影响业务逻辑代码,这符合单一职能原则,降低了藕合性,提高了可复用性。

​ 2、隔离了不同数据库实现。采用面向接口编程,如果底层数据库变化,如由 MySQL 变成 Oracle 只要增加 DAO 接口的新实现类即可,原有 MySQ 实现不用修改。这符合 “开-闭” 原则。该原则降低了代码的藕合性,提高了代码扩展性和系统的可移植性。

一个典型的DAO 模式主要由以下几部分组成。

1、DAO接口: 把对数据库的所有操作定义成抽象方法,可以提供多种实现。         

2、DAO 实现类: 针对不同数据库给出DAO接口定义方法的具体实现。          

3、实体类:用于存放与传输对象数据。         

4、数据库连接和关闭工具类: 避免了数据库连接和关闭代码的重复使用,方便修改。 

10. 简述MVC 中M、V、C的作用及其相互关系?

​ M是指javabean主要用于处理业务逻辑V是指视图层主要用于在客户端展示信息,与用户交互C是控制层,接收客户端请求。控制层接收视图层传过来的请求,根据请求调用javabean处理业务逻辑,并根据处理结果控制页面的跳转

11. 简述JSP和servlet的异同。

​ 相同点:(1)两者都是基于Java的技术,所以都继承了Java的所有特性(跨平台、多线程等 ),都可以使用Java强大的API。(2)两者工作方式相似:JSP代码先被JSP容器转换为Servlet代码再编译为类。(3)两者在J2EE体系结构中的工作层次相同,都负责与客户端的连接。

​ 不同点:

编程方式不同。Servlet是一些运行于Web服务器端的Java小程序;而JSP是脚本,编写起来更简单容易。
应用目的不同。Servlet主要用于从客户端接收请求信息,而JSP主要负责将服务器端信息传送 到客户端

12. JSP有哪些作用域?分别有什么作用以及使用场景?

page:当前页面,也就是只要跳到别的页面就失效了
request:一次会话,简单的理解就是一次请求范围内有效
session:浏览器进程,只要当前页面没有被关闭(没有被程序强制清除),不管怎么跳转都是有效的
application:服务器,只要服务器没有重启(没有被程序强制清除),数据就有效

13. 举例JSTL标签中5个常用的标签并写出其语法代码。

通用标签:out, remove,set 逻辑标签:if 迭代标签:foreach
<%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core”%>//使用标签前要导入uri
<c:set var=”变量名 ” value=”变量值“ scope=”作用域”>/c:set //定义变量
<c:remove var=”变量名” scope=”作用域”>/c:remove //删除变量
<c:out value=”{sessionScope.str}“ ></c:out> //显示变量
<c:froeach items=”变量值” val=”变量名”></c:foreach>//迭代
<c:if test={条件}>/c:if//逻辑

14. 使session失效的方法是什么。删除session中的值是哪个方法?

失效:调用HttpSession的方法:session.setMaxInactiveInterval(1);
删除:session.removeAttribute(String key);

15. 简述在JSP中是如何实现分页操作的。

a)首先分页有两种:
•真分页:性能较高,是基于数据库的操作,只是从数据库中提取出部分的数据进行显示,所以性能高,但是可移植性低。
•假分页:性能较低,是将全部的结果查询出来,之后依靠算法分页,只是显示部分数据,因为使用的是通用的语法,所以可移植性高。
b)分页实现原理:
•定义一系列的变量:currentPage、lineSize、并通过查询求出allRecorders和计算求出pageSize;
|-pageSize = (allRecorders + lineSize – 1)/lineSize
•之后数据库查询语句中根据lineSize和currentPage进行数据的查询;
|-Oracle中使用rownum、Mysql中使用limit()
•之后通过表单不断地修改currentPage、lineSize就可以实现分页显示。

16. 简述Filter的作用以及使用场景。

过滤器可以再请求和响应之前做一部分预处理,有效的过滤掉不需要的内容,而且过滤器可以被复用,节省了大量的复用代码,提高了java的代码执行效率
过滤器Filter作用场景
防止未登录就进入界面
控制应用编码
过滤敏感词汇等场景

17. 简单回答Servlet的工作过程。

(1) 客户机将请求发送到服务器。(2) 服务器上的Web容器实例化Servlet,调用init()方法,并为Servlet进程创建线程。Servlet是在出现第一个请求时装入的,在服务器关闭之前不会卸载它。(3) Web容器将请求信息发送到Servlet 调用servce()方法。(4) Servlet创建一个响应,并将其返回到Web容器。(5) Web容器将响应发回给客户机。(6) 服务器关闭或Servlet空闲时间超过一定限度时,调用destroy方法退出。

18. JSP中有哪些不同类型的指令?

​ 包含指令(Include directive):用来包含文件和合并文件内容到当前的页面。
​ 页面指令(Page directive):用来定义JSP页面中特定的属性,比如错误页面和缓冲区。
​ Taglib指令: 用来声明页面中使用的自定义的标签库。

19. HttpServletRequest和HttpServletResponse常用的方法有哪些?含义是什么?
request.getParameter(String) : String 获取请求参数
request.getParameterValues(String) : String[] 获取一组请求参数的值
request.setCharacterEncoding(String) void 设置请求编码
request.getRequestDispatcher(String) : 获取请求转发器
response.sendRedirect(String) : void 响应重定向
response.getWriter() : 获取一个页面输出对象

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值