JSP入门

什么是JSP

html:静态网页,内容写完了之后,就固定下来了,不会发生改变。

Java server page(java服务器页面),动态网页!JSP=java+html JSP本质就是Servlet 

它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。

JSP产生的原因

需求: 我们要向页面动态输出一个表格. 发现特别的繁琐

servlet在展示页面的时候,相当的繁琐。sun公司为了解决这个问题,参照asp开发了一套动态网页技术jsp。

jsp就是简化书写!

    1. 客户端发起第一次请求xxx.jsp,服务器就会找到对应的jsp文件
    2. 服务器会将jsp文件翻译成xxx_jsp.java
    3. 将xxx_jsp.java编译成xxx_jsp.class
    4. 服务器执行xxx_jsp.class文件 输出结果给客户端浏览器

  1. JSP:是一个动态网页,在jsp中既可以写java代码,又可以写html代码,作用:简化开发

  2. JSP本质就是一个Servlet

  3. JSP执行流程:请求-->index.jsp-翻译->index_jsp.java-编译->index_jsp.class-->执行-->响应给浏览器

  4. 在目前实际开发中,jsp基本不再使用了,1.执行效率低下 2.不利于分工协作

JSP脚本

类型翻译成Servlet对应的部分注意
<%...%>:Java程序片段翻译成Service()方法里面的内容, 局部的
<%=...%>:输出表达式翻译成Service()方法里面的内容,相当于调用out.print()输出表达式不能以;结尾
<%!...%>:声明成员变量翻译成Servlet类里面的内容

JSP&三层架构

获取数组

语法: ${key[下标]} key就是域对象里面存的key

3.3获取list

语法:${list属性名[index]}或者${list属性名.get(index)};list属性名就是存入域对象里面的key

3.4获取Map

语法:${map属性名.键} 或 ${map属性名.get("键")} 或${map属性名[键],map属性名就是存入域对象里面的key }

注意:当map的键比较特殊(eg:"1"、"a.ba.c")时,此时使用点的方式会报错,可以选择使用[]的方式。

JSTL标签库的使用

  1. 导入jar包

  2. 在要使用jstl标签的jsp页面上引入jstl标签库

  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

if标签使用

<c:if test="返回boolean类型结果的el表达式">
  <!-- 当test属性值为true的时候 执行if标签体中的内容 -->
</c:if>

choose标签的使用

<!-- 就是多重if选择结构 -->
<c:choose>
    <c:when test="返回boolean类型结果的el表达式" ></c:when>
    <c:when test="返回boolean类型结果的el表达式" ></c:when>
    ...
    <c:otherwise></c:otherwise>
</c:choose>

forEach标签使用

<!--forEach遍历数据 -->
<!--forEach简单使用 -->
<c:forEach var="迭代变量" begin="开始" end="结束" step="步长" varStatus="元素状态">
    ${迭代变量}
</c:forEach>
<!--forEach实际使用 -->
<c:forEach items="要遍历的集合|数组" var="迭代变量" varStatus="元素状态">
    ${迭代变量}
</c:forEach>

JSP的开发模式一

jsp+javabean:实现

1.所有的代码都在jsp中 会存在大量代码冗余 不利于代码维护修改

2.jsp已经属于上个时代的技术了 过时了 jsp执行效率非常低 jsp-->翻译成java代码-->编译class文件-->执行

JSP的开发模式二

JSP【html】 + Servlet + JavaBean 称为MVC的开发模式.

MVC:开发模式

M:model 模型 (javaBean:处理业务封装数据)

V:View 视图  (JSP|html:展示数据)

C:controller 控制器 (Servlet:接收请求进行分发,做为控制器)

模式三: 三层架构

软件中分层:按照不同功能分为不同层,通常分为三层:表现层(web层),业务层,持久(数据库)层

表现层(web层)com.itheima.web 编写Servlet
业务层(service层)com.itheima.service 编写Service类
持久层(数据库访问层)com.itheima.dao 编写Dao类
JavaBeancom.itheima.bean 封装数据
工具类com.itheima.utils 编写工具类

  • 分层的意义:

    1. 解耦:降低层与层之间的耦合性。

    2. 可维护性:提高软件的可维护性,对现有的功能进行修改和更新时不会影响原有的功能。

    3. 可扩展性:提升软件的可扩展性,添加新的功能的时候不会影响到现有的功能。

    4. 可重用性:不同层之间进行功能调用时,相同的功能可以重复使用。

缺点:代码量增多,结构复杂,当新增功能时,需要web、service、dao分别写一次。

但是利大于弊!所以今后的开发全部使用三层架构进行代码编写。

好的代码:低耦合+高内聚

.DBUtils实现事务管理

API说明
QueryRunner()创建QueryRunner对象. 手动提交事务时使用
query(connection,String sql, Object[] params, ResultSetHandler<T> rsh)查询(需要传入Connection)
update(connection,String sql, Object... params)更新
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值