JSP:是运行在服务器的页面 servlet 是运行在服务器的java代码 (有关系)(页面的展示) (html+Java代码)
静态的网页:前后端交互比较麻烦
动态的页面 :是可以写html标签 :但是比较麻烦,html 与java代码混合,所有说不使用servle写网页
因为是运行在服务器的页面,所有需要进行编译,编译后的代码在哪里? 在你安装的idea的配置目录里
jsp属于一个特殊的servlet,index_jsp extends org.apache.jasper.runtime.HttpJspBase,HttpJspBase是HttpServle的一个子类
out.write("\n");out.write(" \n"); jsp 中所有html代码都是通过write()来写入到浏览器里
jsp 被访问的时候的流程:
jsp与servlet 的区别:
jsp就是一个 servlet
区别:jsp 主要页面的显示(不做转发到某个界面,或者是到那个地方请求) ==>jsp >servlet >service>dao>数据库
servlet(controller) 负责处理请求与相响应
I: model1 模式的缺点: java代码 html 代码混合 ,不方便修改与维护
model2 jsp 在做页面展示 servlet(controller) 负责处理请求与相响应
jsp 的组成部分:
java的片段:<% 中间去写就java代码,不能够写html标签%>
输出语句:<%=%>
注释: 快捷键:alt+shift+/
声明:<%! %> 如果这里有变量是成员变量,一般是申明方法
jsp 中的三大指令: 指令的格式:
<%@>
page
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
contentType="text/html 表示jsp中的类型 charset=UTF-8" 设置其编码格式 language="java" 语言 errorPage="welcome.jsp" 页面发生异常所有加载的页面
<%@ page import="java.text.SimpleDateFormat" %>导包
include 指令: 引入其它jsp文件(基本上都是公共的部分)
<%@ include file="head.jsp"%> 静态引入:适合引用纯html代码 先加载 再编译
taglib 指令一般引用第三方的表达式比如jstl表达式 fmt 格式化时间的
使用jsp来做展示: 展示界面
jsp提供的动态标签库:动态的引入 边加载 边编译 (适合于引入动态的界面) <jsp:include page=“head.jsp”></jsp:include>
el 表达式 : 作用是简化jsp里的代码,用于获取存与内置(request, respone servletContext)对象的值
语法: ${或者的变量的值}
使用el表达式来获取对象,必须给这个对象set get 方法
获取的语法: ${对象名称.属性的名称}
el 作用
1.可以避免简单的错误
2.可以做一些简单的算术
3.可以获取内置对象作用域下的值
jstl 表示式: 一般是与el搭配使用,简化jsp里的代码
使用jstl 表达式:
1.导入jar (添加依赖)
2.引用相应的标签库 jstl
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
prefix=“c” 表示前缀 一般取名为c 可以进行修改(但是不建议)
uri=“http://java.sun.com/jsp/jstl/core” 表示引入的核心库(也就是网址) 固定写法
jstl 常用表达式: <c:set var=“pang” value=“小胖不能再胖了”></c:set> 设置一个变量 var 为变量的名称 value 为值
<c:if test="${pang !=null}">小胖成功找女朋友了</c:if> 用于做判断 test 里便是判断的条件
<c:choose>
<c:when test="
p
a
n
g
=
=
20
"
>
找
了
一
个
女
朋
友
,
年
龄
为
20
<
/
c
:
w
h
e
n
>
<
c
:
w
h
e
n
t
e
s
t
=
"
{pang==20}"> 找了一个 女朋友,年龄为20 </c:when> <c:when test="
pang==20">找了一个女朋友,年龄为20</c:when><c:whentest="{pang>=22}">
下一个刘强东就是你了
</c:when>
<c:otherwise>
找了一个超过20岁的女朋友
</c:otherwise>
</c:choose>
表示多分支if选择结构
遍历集合的标签:
items 表示需要遍历的集合
var=“register” 表示每次遍历的对象
varStatus 表示其索引
begin 表示从几开始遍历
end 到什么时候结束
step 波长 每次遍历的间隔
<c:forEach items="${registerList}" var="register" varStatus="statu" begin="1" end="5" step="2">
${register.id}<br/>
${register.name}
</c:forEach>
<c:out value=“ddd”></c:out> 就是打印