JSP简答题知识点

本文深入解析JSP执行过程、页面组成及内置对象,对比静态与动态包含、请求转发与重定向的区别,介绍JSP基本动作与MVC设计模式,探讨Servlet生命周期与实现方法,阐述JDBC预处理语句的优势及JSP在Web开发中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、JSP执行过程

1.客户端发出Request请求

2.JSP Container将JSP转译成Servlet的源代码

3.将产生的servlet源代码经过编译后,加载到内存执行

4.把结果response(响应)至客户端

 

二、JSP页面组成

 

jsp页面主要由6大元素组成:(静态内容、指定、表达式、scriptlet、声明、动作、注释)指令、注释、脚本元素、声明、表达式、静态内容(HTML元素)或

脚本元素包括表达式<%、Scriptlet<%=、声明<%!

JSP指令包括:

Page(页面指令、用于定义真个JS页面的一些属性和这些属性的值,定义MIME类型、定义需要导入的包、错误页指定、页面编码、脚本语言等)

Include(静态包含、在编译之前已经做了处理)、即先将要包含的文件嵌入相应的JSP页面、再统一转化成一个servlet类

Taglig(将标签描述符文件tld引入该页面,用户自定义标签)

 

  • 内置对象

九大内置对象Request、responese、out、page、pageContext、session、application、config、exception

Request对象用于接收客户端发送来的请求信息、客户端的请求信息被封装再request对象中,HTTPServletRequest的实例,常用方法可以获取参数、设置参数、获取HTTP通信协议信息

  Response对象用于对客户端请求进行响应,将WEB服务器处理后的结果发回给客户端。HTTPServletResponse的实例,常用方法可以设置文件头信息、设定页面重定向以及设置缓冲区信息等。

  • Session与applicaiton的区别

Session作用范围为一段用户持续和服务器连接的时间,但与服务器断线后、属性就无效了,并且存在一定的超时时间,可以进行设置。

application它类似于系统的全局变量,用于保存所有程序中的公有数据。它在服务器启动时自动创建,在服务器停止时销毁。当application对象没有被销毁的时候,所有用户都可以享用该application对象。它的生命周期可以说是最长的。

  • 什么是JAVAbean

软件项目中可以重复利用的组件。Javabean是基于JAVA语言、实际上是一种JAVA类,能够封装属性和方法并且具有某种功能或者处理某个业务的对象,简称Bean。

  1. 实现了代码的重复利用
  2. 易编写、维护、使用
  3. 可以在任何安装了JAVA运行环境的平台使用、而不需要重新编译

六、静态和动态包含的区别

1.最终编译成java文件的数目不同。(从上面的例子可以看出)

静态包含在转换成为java文件的时候将包含文件的内容“复制”到主体文件,然后作为一个整体编译。最终编译为一个java文件。

动态包含是各个jsp文件分别转换,分别编译。最终编程成多个java文件。

2.执行时间不同

静态包含发生在:JSP---->java文件阶段。

动态包含发生在:执行class文件阶段。动态加入。

3.静态包含在两个文件中不能有相同的变量,动态包含允许。

由于静态包含相当于将包含文件内容直接复制到主体文件中,如果出现相同的变量,就会出现覆盖等问题,导致文件出错。而动态包含相当于调用不同的jsp,变量所在的空间不同,自然不会出现覆盖等现象。

4.<%@ include file=” ”%>是指令元素。<jsp:include page=” ”/>是行为元素

七、请求转发和重定向区别

一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理(服务器内部的调用),称之为请求转发

一个web资源收到客户端请求后,通知浏览器去访问另外一个web资源(浏览器进行2次请求),称之为请求重定向

请求重定向和请求转发的区别

一.forward是服务器内部转发,而redirect是通过客户端进行转发

二.如果用forward进行转发的话,客户端的url地址不会改变,但是如果用redirect的话,则url地址会改变

三.如果用forward进行转发,转发页面和被转发页面处于一个request请求内,而redirect不是。

八、JSP基本动作

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

九、servlet生命周期

Init、service、destory

Servlet 通过调用 init () 方法进行初始化。

Servlet 调用 service() 方法来处理客户端的请求。

Servlet 通过调用 destroy() 方法终止(结束)。

最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

十、MVC设计模式

视图层用jsp,javascript

     作用--显示数据,接受用户输入数据

控制层用servlet

     作用--接收视图层数据,传输 给业务逻辑层(即模型层)

模型层用普通java class

     作用--业务类的实现,如:数据库操作

M(DAO)层,就相当于后台,

V(jsp),相当于前台,

C(control)层,相当于控制页面跳转;

MVC模式的目的就是实现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

 

十一、实现Servlet三种方法

开发Servlet有三种方式:

1、实现Servlet接口

2、通过继承GenericServlet

3、通过继承HttpServlet

十二、JDBC使用预处理语句的好处

 

1、执行效率:Statement 采取直接编译 SQL 语句的方式,扔给数据库去执行,而 PreparedStatement 则先将 SQL 语句预编译一遍,再填充参数,这样效率会高一些。JDK 文档说:SQL 语句被预编译并且存储在 PreparedStatement 对象中,其后可以使用该对象高效地多次执行该语句。

 

2、代码可读性:Statement 中 SQL 语句中需要 Java 中的变量,加就得进行字符串的运算,还需要考虑一些引号、单引号的问题,参数变量越多,代码就越难看,而且会被单引号、双引号搞疯掉;而 PreparedStatement,则不需要这样,参数可以采用“?”占位符代替,接下来再进行参数的填充,这样利于代码的可读性,并且符合面向对象的思想。

 

  1. 安全性:Statement 由于可能需要采取字符串与变量的拼接,很容易进行 SQL 注入攻击,而 PreparedStatement 由于是预 编译,再填充参数的,不存在 SQL 注入问题。
  • JDBC基本步骤

Class.forName(“oracle.jdbc.driver.OracleDriver”)

1)加载驱动程序。Conn=DriverManager.getConnection(“jdbc:oracle:thin:@localhost:1521:orcl”,username,Password)

2)建立连接。Stmt=conn.creatStatement()

3)创建语句。预处理他,.prepareStatement(sql);

4)执行语句。Rs=Stmt.excuteUpdate(sql)

5)处理ResultSet。While(rs.next())

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值