jsp指令

1、jndi 方式链接资源

(1)、jndi介绍:(java name derictory interface)
jndi 就是服务器的一种技术,用于帮我们的项目代码查找资源。
包括文本资源,jar包资源,还有配置信息资源。

(2)、jndi的优点:
1、jndi的好处就是,可以不用在你的项目中修改配置信息了。
这样就可以降低代码的耦合性,
2、只要是在服务器里面部署的项目,都可以共用这些资源。

(3)、jndi的使用。

练习1:

  • 在服务器tomcat里面要配置相关的信息。

在服务器tomcat的conf 目录下,找到
context.xml,在里面加入标签内容。

java 代码在 jsp页面里面要写的东西。

// javax.naming.Context提供了查找JNDI 的接口

Context ctx = new InitialContext();

// java:comp/env/为前缀
String testjndi = (String)ctx.lookup(“java:comp/env/tjndi”);
out.print("JNDI: " + testjndi);

(4)、 注意: jndi技术,只能应用在web应用,jsp等相关页面中获取。
而java代码的main方法里面,获取jndi是获取不到的。
本质上,是因为main方法运行根本就不依靠 服务器

2、数据库连接池的讲解。

(1)、数据库链接池技术出现的背景:
因为我们每次访问数据库,都需要创建数据库链接,用完了又关闭。
如果频繁访问数据库的话,那么创建数据库链接,将是非常耗费资源的事情。
——>出现的数据库连接池的技术。
之前给大家介绍过的,数据库连接池的jar包,c3p0 ,druid

(2)、数据库链接池技术的原理:
主要是为了解决数据库链接耗费大量系统资源的问题。

  • 通过jndi的方式,来获取数据库资源管理。
    javax.sql.DataSource 接口的实现类
    负责管理与数据库的连接
    以连接池的形式对数据库连接进行管理

(3)、怎么用。

1、也需要配置服务器tomcat里面的Context.xml里面的配置。

解释标签内容:
1、name=“” auth=“” type=“”
2、maxActive=“10” 最大数据库链接数量
maxIdel=“5” 平时准备数据库链接数量
maxWait=“3000” 最大链接超时的时间。以毫秒为单位
3、username=“” pasword=“” driverClassName=“” url=“”

2、也需要通过web、项目中的jsp页面编写代码获取。

(1)、需要把数据库链接的jar包,放到服务器tomcat的lib目录下。
mysql-connector-java-5.1.37-bin.jar

(2)、配置项目的web.xml 里面,获取资源管理的配置。

jdbc_poll Container javax.sql.DataSource

如果项目有报错,提示下面的错误,那么都是web版本出现问题。
cvc-complex-type.2.4.a: Invalid content was found starting
with element ‘res-type’. One of ‘{“http://java.sun.com/xml/ns/
javaee”:res-sharing-scope, “http://java.sun.com/xml/ns/
javaee”:mapped-name, “http://java.sun.com/xml/ns/
javaee”:injection-target}’ is expected.

解决报错:
<web-app version=“2.4”
http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd

3、 jsp页面中,java 代码的具体编写。

//这里,我要获取获取服务器配置是数据库链接资源对象,然后获取数据库链接,进行访问。
Context ctx = new InitialContext();

//通过ctx、对象的lookup方法,获取到数据库资源对象。
DataSource ds = (DataSource) ctx.lookup(“java:comp/env/jdbc_pool”);

//通过数据库资源对象(具有数据库连接池属性)。来获取数据库链接通道
Connection conn = ds.getConnection();

//通过数据库链接通道,获取sql执行对象。PreparedStatement
PreparedStatement pstmt =
conn.prepareStatement("insert into news_users values(null,‘wwww’,‘123123’) ");

// 接收PreparedStatement对象执行sql语句后,返回的结果。
int result = pstmt.executeUpdate();

//处理返回结果。
out.println(result);

3、三层架构

三层架构的开发思想,是针对于javaee 项目而言的,也就web项目。
三层架构的好处,就是让各部分代码,实现分内的事情。互相之间不干扰。
好处1: 降低代码之间的耦合性,利于现有代码的维护。
好处2: 提高代码的可扩展性,利于项目增加新功能开发。

(1)显示层:jsp页面,作为显示。servlet做页面的逻辑。

业务逻辑层 Controler.jsp 页面里面做的逻辑业务处理。
数据层 JDBCUtils 专门做数据的处理
页面显示层。 regist.jsp login.jsp welcome.jsp

MVC 开发模式:
M model 模型 Accout 类, JDBCUtils
v view 视图 regist.jsp login.jsp welcome.jsp
C control控制 Controler.jsp 页面里面做的逻辑业务处理。

(2)业务逻辑层:只做业务逻辑 处理,不做页面的展示。
比如我们之前做的登录注册项目:Controller.jsp
这里面我们做的,就是页面逻辑处理,然后进行跳转页面。

  • 从页面中拿到数据,存放到数据库
  • 从数据库获取数据,然后显示在页面。
  • 从页面和数据库分别获取数据,然后进行逻辑处理。

(3)数据访问层: dao模式开发:

数据库中的表account 封装一个类Account
针对于account的增删改查,再创建一个dao的接口。 AccountDao
在AccountDao封装增删改查的抽象方法。
在给AccountDao 创建实现类。AccountImpl

在方法中调用JDBCUtils
进行增删改查的操作。

dao模式: 通过封装一个数据库对应表的javabean 的方式,然后进行数据处理。
dao: data access Object 数据访问对象。用对象的方式访问数据。
dao模式开发:

  • 创建一个数据库操作的接口,里面定义一些操作数据库的抽象法。
  • 创建一个操作数据库的类,实现操作数据库的接口
    在里面重写所有要实现的方法,具体的访问数据库的CRUD
  • 封装一个与表一一对应的数据单元,javabean。
  • dao模式下,数据的传递,都是通过javabean对象的方式操作。

4、mvc模式开发。

(1)、MCV模式开发,包含三层架构:
上面说了三层架构,是只针对于javaee web项目来说的。
mvc模式开发,适用于所有项目,都是要按照这个思想模式开发的。

(2)、MVC模式的介绍:
MVC模式是咱们具体工作中必备的开发模式。
也是让各个部分代码之间相互独立,尽量不产生联系,
这样可以方便每个部分代码的解耦和扩展。

(3)、MVC各部分分析:

M modle 模型:就是封装基本的数据单元。把数据封装成对象操作。
对应咱们做过的项目,我们封装的user 类,就是M 模型层

V view 显示:显示层,界面的展示。数据的展示。
对应咱们做过的项目,jsp页面就是V 显示层。

C control 控制:对项目中所有的要处理的业务逻辑,进行代码编码的部分。
对应咱们做过的项目,Controller.jsp页面做逻辑处理的,就是C 控制层。

(4)、mvc模式开发过程中,就是通过C 控制部分的代码,访问数据库将数据封装成 M 模型,
然后让数据在 V 显示层上进行展示。

5、JSP的指令

  • JSP中,有三个指令
    写法 <%@ 指令名 属性名=“属性值” %>

(1)、page 指令
<1>、设置jsp页面的一些信息。
<2>、写法<%@ page 属性名=“属性值”%>
<3>、属性:

  • language :jsp页面支持的语言类型,目前是只支持java语言。
  • extends :jsp页面会编译成servlet,继承的类,默认继承的类是HttpJspBase
  • session :jsp页面中默认是可以直接使用session对象的,默认值是true
  • import :jsp页面中的导包,可以写在一个page指令中,也可以独立来写。
  • buffer :jsp页面对浏览器数据内容,缓冲空间大小,默认是8kb
  • autoFlush :jsp页面是否自动刷新缓冲区的内容到浏览器页面。默认值是true
  • errorpage :jsp页面如果发生了错误,要跳转到错误处理页面。
  • isErrorPage:jsp页面是否是错误处理页面,默认值是flase,true代表是错误处理页面。
    如果设置为是错误处理页面,那么就可以使用内置对象execption对象。
    通过execption对象的getMessage 方法获取错误原因。
  • contentType:jsp页面设置在浏览器显示的编码方式。
  • pageEncoding:jsp编译成servlet,使用的编码方式,优先级大于 contentType,
    也就是,设置了pageEncoding之后,contentType就失效了,以pageEncoding为准
  • isElIgnored: 是否忽略el表达式的写法。默认是false就是不忽略。
    改成true之后,el表达式变成普通文本。

(2)、include 指令:
<1>、 在一个页面中包含的内容。
<2>、 写法<%@ include 属性名= “属性值”%>、
<%@ include file=“被包含的jsp页面”%>
<3>、规范:
第一、被包含的页面中,直接写内容。
第二、被包含的页面中不能使用变量传递。
<% String url = “aa.jsp”%>
<%@ include file=“<%=url%>” %>
第三、被包含的页面路径后面不能加参数。
<%@ include file=“aa.jsp ? username=zhangsan & password=123” %>

<4>、include 包含,也称为 静态包含,
当我们包含多个jsp页面,那么我们编译之后,会生成几个servlet ?、
结论: 多个被jsp包含的页面,最终编译后,会融合到包含的一个servlet页面。

(不理解可以画图理解)

(3)、taglib 指令:
<1>、经常和jstl标签库一起使用,替代页面中的<%%>
<2>、写法:<%@ taglib uri=“jstl标签库的路径” prefix=“jstl标签库的别名”%>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值