javaWeb实战教程6-jsp和jstl
来源:互联网 发布:保留小数位数的函数sql 编辑:程序博客网 时间:2024/06/16 11:07
javaWeb实战教程
2.9 jsp
JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头,以%>结束。
JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。
与纯 Servlets相比:JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println语句。
jsp继承于servlet,包含servlet的所有方法,我们可以像操作servlet一样操作jsp。
在网站根目录下新建一个jsp文件:Lesson9Jsp.jsp,在body中写入hello world:
<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> hello world </body></html>
在浏览器中访问http://localhost/javaWeb/Lesson9Jsp.jsp。
我们虽然可以在jsp中处理表单、执行业务逻辑,但通常情况下我们只使用jsp做为html页面展示数据,也就是mvc框架中的view的作用,实际的业务逻辑还是在servlet中执行。
在cn.funsoftware.Lesson.servlet里新建一个servlet:Lesson9Servlet2Jsp.java:
@WebServlet("/Lesson9Servlet2Jsp")public class Lesson9Servlet2Jsp extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setAttribute("username", "xiaoming"); Type type=new TypeDao2().getById(1); req.setAttribute("type", type); List<Type> types=new TypeDao2().getList(); req.setAttribute("types", types); req.getRequestDispatcher("/Lesson9Jsp.jsp").forward(req, resp); }}
在Lesson9Jsp.jsp里写入
<%=request.getAttribute("username") %><br><%=((Type)request.getAttribute("type")).getName() %><br><% List<Type> types=(List<Type>)request.getAttribute("types"); for(Type type:types){%> <%=type.getName() %><% }%>
在浏览器里运行http://localhost/javaWeb/Lesson9Servlet2Jsp,原本存在servlet的request中的值展示在了jsp页面里。
2.10 JSTL标准标签库
刚刚所写的Lesson9Jsp.jsp虽然实现了数据展示,但满眼的<%%>java代码,使得HTML和java混杂到一起。实际开发时,通常编写java代码和编写前台html页面的程序员是不同职责的两批人,负责前台编写的程序员可能只会HTML,或者负责前台编写的程序员没有参与过后台java的编写,不了解项目的各个类,这时候我们需要一个更简单、与java代码分离的方法来更优雅的展示数据。
Lesson9Jsp.jsp如果使用jstl标签来写,应该是这样的:
${username }<br>${type.name}<br><c:forEach items="${types}" var="t">${t.name}</c:forEach>
2.10.1 JSTL 库安装
向项目的lib目录下导入jar包:
standard.jar
、jstl.jar
;在要使用标签的jsp页面上引入要使用的标签,如:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
2.10.2 核心标签core
核心标签是最常用的JSTL标签。引用核心标签库的语法如下:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
核心标签常用功能:
运行下面的代码来实践各个标签的作用:
<c:out value="${username}"></c:out><hr><c:set var="result" value="${2000*2}"/><c:out value="${result}"/><hr><c:remove var="result"/><c:out value="${result}"/><hr><c:if test="${username=='xiaohua'}">是小花!</c:if><c:if test="${username!='xiaohua'}">不是小花!</c:if><hr><c:choose> <c:when test="${username=='小花' }">是小花</c:when> <c:otherwise>不是小花</c:otherwise></c:choose><hr><c:forEach items="${types}" var="t" varStatus="s">${s.index }:${t.name }<br></c:forEach><hr><c:forTokens items="小明,小红,小花" delims="," var="name">${name}</c:forTokens>
2.10.3 格式化标签fmt
JSTL格式化标签用来格式化并输出文本、日期、时间、数字。引用格式化标签库的语法如下:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
格式化标签常用的标签是:
其中formatNumber可以格式化数字:
maxIntegerDigits:<fmt:formatNumber value="123.34" maxIntegerDigits="2"/><br>minIntegerDigits:<fmt:formatNumber value="1.1" minIntegerDigits="3"/><br>maxFractionDigits:<fmt:formatNumber value="1.123456" maxFractionDigits="2" ></fmt:formatNumber><br>minFractionDigits:<fmt:formatNumber value="1.1" minFractionDigits="3"></fmt:formatNumber><br>pattern:<fmt:formatNumber value="234.5678" pattern="####.00"></fmt:formatNumber><br>
- maxIntegerDigits:整型数最大的位数;
- minIntegerDigits:整型数最小的位数 ;
- maxFractionDigits:小数点后最大的位数;
- minFractionDigits:小数点后最小的位数;
- pattern:指定一个自定义的格式化模式用与输出,0和#代表一位数字,若没有则显示 0,其中#的前导 0 和追尾 0 不显示;
formatDate可以格式化时间:
<fmt:formatDate value="<%=new Date() %>" pattern="yyyy-MM-dd HH:mm:ss"/>
pattern可以自定义格式模式。
2.10.4 函数标签fn
JSTL包含一系列标准函数,大部分是通用的字符串处理函数。引用JSTL函数库的语法如下:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
contains:
endsWith:
join:
replace:
substring:
substringBefore:
toUpperCase:
输出结果:
contains:truecontainsIgnoreCase:trueendsWith:falseindexOf:1join:a,b,clength:6replace:abc-aaa-hijstartsWith:truesubstring:bcsubstringAfter:efgsubstringBefore:abtoLowerCase:abctoUpperCase:ABCDEFGtrim:abc
- javaWeb实战教程6-jsp和jstl
- JavaWeb---JSP标准标签库(JSTL)
- JavaWeb开发知识总结(JSP,EL,JSTL)
- javaWeb实战教程2-servlet内置对象和错误处理
- javaWeb实战教程4-jdbc连接数据库和junit单元测试
- javaWeb-EL表达式和JSTL
- javaWeb实战教程1-servlet
- jsp-el和jstl
- JavaWeb -- Jsp 和 JavaBean
- JavaWeb--JSP和Servlet
- JavaWeb入门实战—EL表达式&JSTL标签
- JavaWeb入门实战—JSP技术
- JavaWeb JSTL
- JAVAWEB-JSTL
- JavaWeb:JSTL
- javaweb jsp标签标准库JSTL 14个标签详解
- 16.JavaWeb基础 JSTL(JSP标准标签库)
- JavaWeb之动态页面技术JSP/EL/JSTL
- javaWeb实战教程5-fileupload文件上传
- PAT 1054 求数组中数量超过一半的数字
- dubbo assembly打包
- 《数据结构学习与实验指导》4-7:修理牧场
- 数据库索引
- javaWeb实战教程6-jsp和jstl
- XCode编译报错 Command /usr/bin/codesign failed with exit code 1
- hdu 2616 Kill the monster(dfs)
- javaWeb实战教程7-搭建项目框架
- 从源码剖析PopupWindow 兼容Android 6.0以上版本点击外部不消失
- android隐藏关闭软键盘
- javaWeb实战教程8-用户模块的编码实现
- 安卓进入页面避免软键盘弹出的解决办法
- 先搞一波kotlin,看它怎么说