小白学习Jsp常用知识

学习jsp、EL表达式、JSTL标签

虽然它们,现在几乎看见了,但是还是值得学习的

一、JSP三大指令

标准指令: 设定JSP网页的整体配置信息
特点:

并不向客户端产生任何输出,
指令在JSP整个文件范围内有效
为翻译阶段提供了全局信息
指令的语法格式:
<%@ 指令名称 属性名=“属性值” 属性名=“属性值” …%>

1.page指令

<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
page指令: 表示JSP页面相关的配置信息

常用属性:

language: 表示在JSP中编写的脚本的语言.(只能是java)
contentType: 表示JSP输出的MIME类型和编码.等价于 response.setContentType(“text/html;charset=utf-8”);
pageEncoding: 表示JSP输出的编码;等价于response.setCharacterEncoding(“utf-8”);
import: 用于导入JSP脚本中使用到的类,等价于Java代码中的: import 类的全限定名;
注意:一个import属性可以导入多个包,用逗号分隔。
errorPage: 指示当前页面出错后转向(转发)的页面。目标页面如果以"/"(当前应用)就是绝对路径。
iserrorpage:是否把这个页面作为错误页面,标志完,该页面就可以用exception这个内置对象,exception.getMessage()

2.include(包含)指令

静态包含: 使用JSP的include指令
<% @include file=“被包含的页面文件” %>
特点:在翻译阶段就已经把多个JSP,合并在一起,最终翻译得到一个java文件

动态包含: 使用JSP的动作指令

<jsp: include page=“被包含的页面文件” />特点:把每一个JSP都翻译成Servlet类,在运行时期,动态的合并在一起,最终得到多个java文件

动态包含和静态包含的选择:
如果在包含的时候,需要传递数据,此时只能使用动态包含.(
如果被包含的页面如果是静态页面,那么使用静态包含
如果被包含的如果是动态页面,那么使用动态包含

注意:在实际开始中通常将被包含的jsp页面的后缀名设置为jspf.

3.taglib(标签库)指令

  • 作用:引入外部的标签
  • 语法:<%@taglib uri=“标签名称空间” prefix=“前缀”%>
    <%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>

二、九大内置对象

名称类型描述
requestHttpServletRequest请求对象
responseHttpServletResponse响应对象
sessionHttpSession会话对象(page指令:session=“true”)
applicationServletContext当前web应用对象
pageContextPageContext当前的JSP作用域对象,可以获取其他八个内置对象
exceptionThrowable异常对象(page指令:isErrorPage=“true”)
configServletConfig当前JSP的配置对象
outJspWriter字符输出流输出流对象
pageObject当前Servlet对象

三、MVC开发模式

1.jsp演变历史

1).早期只有servlet,只能使用response输出标签数据,非常麻烦

2).后来有了jsp,简化了servlet的开发,但如果过度使用Jsp,在jsp中写入大量java代码,造成难以维护,难于分工

3).再后来,java的web开发借鉴了MVC开发模式,使程序的设计更加合理性

2.MVC

1).M: Model, 数据模型对象(JavaBean)

  • 业务逻辑操作

2).V: View, 视图界面(JSP, UIView, Window)

  • 展示数据

3).C: Controller, 控制器(Servlet)

  • 获取客户端输入
  • 调用模型,进行业务操作
  • 将数据交给视图展示

3.优缺点

  • 耦合性低,方便维护,可以利于分工维护
  • 重用性高
  • 使得项目架构变得复杂,对开发人员要求较高

四、EL表达式

1.概念

表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL 出现的目的是要替代jsp页面中输 出脚本的编写

2.EL表达式的格式和作用

EL表达式的格式:

${EL表达式内容}

相当于 ${} 替代 <%%>

EL表达式的作用:

1).从域对象中查找指定的数据。

EL中提供 域对象对应的对象

域对象EL中对应的对象
pageContextpageScope
requestrequestScope
sessionsessionScope
applicationapplicationScope
<!--
${xxxScope.keyName}
${xxxScope["keyName"]}
简化格式: ${keyName}
-->
<body>
<%
    request.setAttribute("name1","HQ");
    session.setAttribute("name2","WNB");
%>
${requestScope.name}<br>
${sessionScope.name1}<br>
${name1}<br>
${name2}<br>
</body>
2).EL获取List集合中的数据
<%
    ArrayList arrayList = new ArrayList();
    arrayList.add("hq");
    arrayList.add("wnb");
    request.setAttribute("list",arrayList);
%>
${requestScope.list}<br>
${requestScope.list[0]}<br>
${requestScope.list[1]}<br>
${list[0]}<br>
${list[1]}<br>
3).EL获取Map集合中的数据
<%
    HashMap hashMap = new HashMap();
    hashMap.put("name1","HQ");
    hashMap.put("name2","WNB");
    request.setAttribute("map",hashMap);
%>
${requestScope.map.name1}<br>
${requestScope.map.name2}<br>
${map.name1}<br>
${map.name2}<br>
${map["name1"]}<br>
${map["name2"]}<br>
4).EL获取对象中的数据
<%
    Student student = new Student();
    student.setId(1);
    student.setName("HQ");
    request.setAttribute("student",student);
%>

${requestScope.student}<br>
${requestScope.student.name}<br>
${student.name}<br>
${student.birthday}<br>
5).内置对象使用

requestScope,sessionScope类似于内置对象,但不是

这里可以用pageContext来获取其他八大内置对象

${pageContext.request}
${pageContext.request.contextPath}
6).执行运算符

比较简单这里只讲空运算符empty

用于判断字符串、数组、集合是否为NULL或者长度是否为0

如果为空或者长度为0,那么就是true

${empty list}
${not empty list}

五、JSTL

1.概念

JSTL标签库 全称是指 JSP Standard Tag Library JSP标准标签库。是一个不断完善的开放源代码的JSP标签库。
EL表达式主要是为了替换jsp中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个jsp页面变得更佳简洁。

2.使用

1.导入jstl相关jar包
2.引入标签库:taglib指令引入:<%@ taglib %>
3.使用标签

1).if
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--
test 传一个boolean类型的表达式
如果为true就显示标签体内容
如果为false就不显示标签体内容
没有else情况,需要的话再if
--%>
<c:if test=""></c:if>
</body>
2).foreach
<c:forEach items="${list}" var="name" varStatus="s">
    ${name} ${s.index} ${s.count}<br>
</c:forEach>

六、三层架构

1.表示层:又称为 web层,用户用上面的组件进行数据交互的。

2.业务逻辑层:又称为service层,相当于对dao层的增强,专门用于处理业务数据的。

3.数据访问层:又称为dao层,与数据库进行数据交换的。最简单的CURD,将数据库的一条记录与JavaBean进行对应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值