Jsp笔记 包含el表达式,jstl标签库, c标签, fmt 子库的基本使用
2019-03-06 21:06
295 查看
分析servlet存在弊端
开发:继承HttpServlet,覆盖service方法。 代码的修改:需要重新编译 对于显示的servlet:所有的html标签都是通过流输出的,麻烦;
JSP(Java Server Page)
概念:JSP是运行于服务器端 的 生成动态页面的技术,是servlet的升级。 作用:用于替换现有项目中负责显示的servlet
开发一个jsp
1.创建一个web项目 2。在webroot下创建一个*.jsp的文件//不能放到WEB-INF下 此文件夹受保护 3.编写jsp//html标签与java代码 4.部署项目 5.访问
Jsp与Jsp之间的传值 el表达式 获取 request作用域中 自定义对象 的值
1.第一种形式 <a href=""?1d=></a> param取值 作为get提交方式 传对象不支持 在一个页面用超链接加?属性名=需要传的属性值传值,在另一个页面用 el表达式取值 ${param.属性名} 就可以获取属性对应的值 eg: Test1.jsp 超链接 跳转 传值 中带值 跳到 Test2.jsp中 <a href="/jsp_day3/Test2.jsp?name=张三&password=123456&birthday=1998-10-10">点我跳转</a> Test2.jsp取值 ${param.name} //输出结果 张三 ${param.password}//输出结果 123456 ${param.birthday}//输出结果 1998-10-10 eg: 存值跳转 <a href="/t_Book/Test2.jsp?name=a&password=123456&birthday=1992.12.23">点我跳转</a> 取值 ${param.name} ${param.password} ${param.birthday} 2.forward 请求转发 eg:把Test1.jsp中存入的值传到Test2.jsp中 第一步:Test1.jsp中代码 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page language="java" import="com.entity.T_User1"%> <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>测试用forward请求转发进行页面间的传值</title> </head> <body> <% //相当于java后台代码 T_User1 user1 = new T_User1 (); user1.setUsername ("bbbbbjjfg"); user1.setPassword ("111111"); //存值用request作用域 request.setAttribute ("user1",user1); RequestDispatcher requestDispatcher = request.getRequestDispatcher ("/Test2.jsp"); requestDispatcher.forward (request,response); %> </body> </html> 第二步:Test2.jsp中代码 <%@page language="java" import="java.util.*" pageEncoding="UTF-8" %> <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>El表达式取值2</title> </head> <body> <!-- el表达式 获取 request作用域中 自定义对象 的值--> <!-- 方式一--> ${requestScope.user1.username} <!-- 方式二--> ${requestScope.user1.getUsername()} <!-- 方式三--> ${user1.username} ${requestScope.user1.password} </body> </html>
el表达式 获取数组的值 用request作用域存取 (其他两种作用域可以使用,此处举其中一列说明)
//定义一个数组 String[] ss = {"aa","bb","cc","dd"}; //用 request 作用域存值 request.setAttribute ("arr",ss); <!-- el表达式 获取 request作用域中 数组 的值--> <c:forEach var="arr" items="${requestScope.arr}"> ${arr} </c:forEach>
el表达式 获取 自定义对象的值 用request作用域存取 (其他两种作用域可以使用,此处举其中一列说明)
样例代码 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page language="java" import="com.entity.T_User1"%> <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title> 获取 自定义对象的值</title> </head> <body> <% T_User1 user1 = new T_User1 (); user1.setUsername ("bbbbbjjfg"); user1.setPassword ("111111"); T_User1 user2 = new T_User1 ("100","cc","222222"); T_User1 user3 = new T_User1 ("101","d","222222"); T_User1 user4 = new T_User1 ("102","e","222222"); T_User1 user5 = new T_User1 ("103","f","222222"); ArrayList<T_User1> t_user1s = new ArrayList<T_User1> (); t_user1s.add (user1); t_user1s.add (user2); t_user1s.add (user3); t_user1s.add (user4); t_user1s.add (user5); //存值用request作用域 request.setAttribute ("user1",user1); session.setAttribute ("userlist",t_user1s); %> <!-- el表达式 获取 request作用域中 自定义对象 的值--> <!-- 方式一--> ${requestScope.user1.username} <!-- 方式二--> ${requestScope.user1.getUsername()} <!-- 方式三--> ${user1.username} ${requestScope.user1.password} </body> </html>
el表达式 取Session作用域中取list集合 (其他两种作用域可以使用,此处举其中一列说明)
样例代码 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page language="java" import="com.entity.T_User1"%> <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>测试用forward请求转发进行页面间的传值</title> </head> <body> <% T_User1 user1 = new T_User1 (); user1.setUsername ("bbbbbjjfg"); user1.setPassword ("111111"); T_User1 user2 = new T_User1 ("100","cc","222222"); T_User1 user3 = new T_User1 ("101","d","222222"); T_User1 user4 = new T_User1 ("102","e","222222"); T_User1 user5 = new T_User1 ("103","f","222222"); ArrayList<T_User1> t_user1s = new ArrayList<T_User1> (); t_user1s.add (user1); t_user1s.add (user2); t_user1s.add (user3); t_user1s.add (user4); t_user1s.add (user5); //存值用request作用域 request.setAttribute ("user1",user1); session.setAttribute ("userlist",t_user1s); %> <!-- 从 session 作用域中区 list集合中的值--> <!--遍历输出 并渲染到表格--> <table width="50%" bgcolor="red" cellspacing="1" cellpadding="1" border="1"> <tr> <td>编号</td> <td>用户名</td> <td>id</td> <td>密码</td> </tr> <!-- varStatus="stu" 给数据字动编号 --> <c:forEach var="list" items="${sessionScope.userlist}" varStatus="stu"> <tr> <td>${stu.index+1}</td> <td>${list.username}</td> <td>${list.id}</td> <td>${list.password}</td> </tr> </c:forEach> </body> </html>
用 ServletContext 作用域 取 map 集合的值 (其他两种作用域可以使用,此处举其中一列说明)
样例代码 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page language="java" import="com.entity.T_User1"%> <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Session作用域中取list集合</title> </head> <body> <% T_User1 user1 = new T_User1 (); user1.setUsername ("bbbbbjjfg"); user1.setPassword ("111111"); T_User1 user2 = new T_User1 ("100","cc","222222"); T_User1 user3 = new T_User1 ("101","d","222222"); T_User1 user4 = new T_User1 ("102","e","222222"); T_User1 user5 = new T_User1 ("103","f","222222"); ArrayList<T_User1> t_user1s = new ArrayList<T_User1> (); t_user1s.add (user1); t_user1s.add (user2); t_user1s.add (user3); t_user1s.add (user4); t_user1s.add (user5); HashMap<String,T_User1> map = new HashMap<String,T_User1> (); map.put ("第一个",user1); map.put ("第二个",user2); map.put ("第三个",user3); map.put ("第四个",user4); //存值用request作用域 request.setAttribute ("user1",user1); //存值用session作用域 session.setAttribute ("userlist",t_user1s); //存值用 servletContext ServletContext servletContext = session.getServletContext (); servletContext.setAttribute ("mapname",map); /* RequestDispatcher requestDispatcher = request.getRequestDispatcher ("/Test2.jsp"); requestDispatcher.forward (request,response);*/ %> <!--map 集合遍历输出--> <table width="50%" bgcolor="red" cellspacing="1" cellpadding="1" border="1"> <tr> <td>编号</td> <td>用户名</td> <td>id</td> <td>密码</td> </tr> <!-- varStatus="stu" 给数据字动编号 --> <c:forEach var="map" items="${applicationScope.mapname}" varStatus="stu"> <tr> <td>${stu.index+1}</td> <td>${map.key}is${map.value.username}</td> <td>${map.key}is${map.value.id}</td> <td>${map.key}is${map.value.password}</td> </tr> </c:forEach> </table> </body> </html>
总体样例代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page language="java" import="com.entity.T_User1"%> <%@ page import="java.net.URL" %> <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>作用域中取值</title> </head> <body> <% T_User1 user1 = new T_User1 (); user1.setUsername ("bbbbbjjfg"); user1.setPassword ("111111"); T_User1 user2 = new T_User1 ("100","cc","222222"); T_User1 user3 = new T_User1 ("101","d","222222"); T_User1 user4 = new T_User1 ("102","e","222222"); T_User1 user5 = new T_User1 ("103","f","222222"); ArrayList<T_User1> t_user1s = new ArrayList<T_User1> (); t_user1s.add (user1); t_user1s.add (user2); t_user1s.add (user3); t_user1s.add (user4); t_user1s.add (user5); HashMap<String,T_User1> map = new HashMap<String,T_User1> (); map.put ("第一个",user1); map.put ("第二个",user2); map.put ("第三个",user3); map.put ("第四个",user4); //存值用request作用域 request.setAttribute ("user1",user1); //存值用session作用域 session.setAttribute ("userlist",t_user1s); //存值用 servletContext ServletContext servletContext = session.getServletContext (); servletContext.setAttribute ("mapname",map); //定义一个数组 String[] ss = {"aa","bb","cc","dd"}; //用 request 作用域存值 request.setAttribute ("arr",ss); /* RequestDispatcher requestDispatcher = request.getRequestDispatcher ("/Test2.jsp"); requestDispatcher.forward (request,response);*/ %> <!-- el表达式 获取 request作用域中 数组 的值--> <c:forEach var="arr" items="${requestScope.arr}"> ${arr} </c:forEach> <!-- el表达式 获取 request作用域中 自定义对象 的值--> <!-- 方式一--> ${requestScope.user1.username} <!-- 方式二--> ${requestScope.user1.getUsername()} <!-- 方式三--> ${user1.username} ${requestScope.user1.password} <!--从applicationScope作用域中取值遍历map集合输出--> <table width="50%" bgcolor="red" cellspacing="1" cellpadding="1" border="1"> <tr> <td>编号</td> <td>用户名</td> <td>id</td> <td>密码</td> </tr> <!-- varStatus="stu" 给数据字动编号 --> <c:forEach var="map" items="${applicationScope.mapname}" varStatus="stu"> <tr> <td>${stu.index+1}</td> <td>${map.key}is${map.value.username}</td> <td>${map.key}is${map.value.id}</td> <td>${map.key}is${map.value.password}</td> </tr> </c:forEach> </table> <!--从session作用域中取值遍历list集合输出--> <table width="50%" bgcolor="red" cellspacing="1" cellpadding="1" border="1"> <tr> <td>编号</td> <td>用户名</td> <td>id</td> <td>密码</td> </tr> <!-- varStatus="stu" 给数据字动编号 --> <c:forEach var="list" items="${sessionScope.userlist}" varStatus="stu"> <tr> <td>${stu.index+1}</td> <td>${list.username}</td> <td>${list.id}</td> <td>${list.password}</td> </tr> </c:forEach> </table> <h15秒后自动跳转</h1> <% response.setHeader("Refresh","5,URL=t.jsp"); %> <!--每隔一秒自动刷新--> <% response.addIntHeader("Refresh",1);%> <!--c标签 分支判断 只有条件为true时才在页面输出结果--> <% request.setAttribute ("aa",90); request.setAttribute ("bb",70); request.setAttribute ("cc",30); %> <c:if test="${requestScope.aa>80}">优秀</c:if><!-- 结果为true 展示--> <c:if test="${requestScope.bb>60}">良好</c:if><!-- 结果为true 展示--> <c:if test="${requestScope.cc>50}">不及格</c:if><!-- 结果为false 展示--> <c:if test=""></c:if> <!-- 无效果,包括字符串中所有信息包括body h1 标签--> <c:out value="<body><h1>ddxxc</h1></body>" escapeXml="true"></c:out> <!-- 输出有效果--> <c:out value="<body><h1>ddxxc</h1></body>" escapeXml="false"></c:out> Cookie <% Cookile cookile = new Cookile ("username", "svalue"); %> ${cookile.username.name} ${cookile.username.value} //日期输入标签 <input type="date" />
jstl标签库(java standard tag library)
在当前jsp页面导入核心标签库 <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%> 使用标签:<c:标签名字 属性名="属性值"></....> 标签中的属性的值一般是通过 el(${}) 表达式从作用域中取出 1.<c:if></c:if> 作用:做分支判断 <c:if test="${requestScope.aa>80}">优秀</c:if><!-- 结果为true 展示--> <c:if test="${requestScope.bb>60}">良好</c:if><!-- 结果为true 展示--> <c:if test="${requestScope.cc>50}">不及格</c:if><!-- 结果为false 展示--> 2.<c:forEach></c:forEach> 作用:遍历集合或数组(遍历集合包括:list、map) <c:forEach var="list" items="${sessionScope.userlist}" varStatus="stu"> <tr> <td>${stu.index+1}</td> <td>${list.username}</td> <td>${list.id}</td> <td>${list.password}</td> </tr> </c:forEach> 3.<c:choose></c:choose> 类似于 switch(){case:} eg:<c:choose> <c:when test="${age>0&&age<12}">少年</c:when> <c:when test="${age>=12&&age<=18}">青年</c:when> <c:when test="${age>18&&age<=30}">壮年</c:when> </c:choose> 4.<c:set></c:set> 作用:向作用域中存值 解释说明:value="90"向指定作用域中命名属性存值 var="age"向指定作用域中存储命名属性 secope="request"指定存储作用域 eg:<c:set value="90" var="age" secope="request"></c:set> 5<c:remove></c:remove>作用:向作用域中移除 解释说明: var="age"移除命名属性 scope="request"移除作用域 eg:<c:remove var="age" scope="request"></c:remove> 6<c:out></c:out> 作用:向页面输出结果 相当于 out.println() 解释说明:当前值为true会原样输出value指定的值 当前值为false会按照标签解析输出结果 <c:out value="<body><h1>xxxxx</h1></body>" escapexml="false"></c:out> 7<c:redirect></c:redirect> 作用:重定向 eg:<c:redirect url="/index.jsp"></c:redirect> //jsp重定向jsp之间不需要加(项目名)应用名 8<c:url></c:url> 作用:表示一个url,当浏览器 cookie 被禁用的时候,会自动完成重写 9<c:import url="指定导入目标资源路径"></c:import>
使用 fmt 子库
使用 fmt 子库 第一步 导入该库 <%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt"%> <!--日期格式化展示--> <fmt:formatDate value="${requestScope.date}" pattern="yyyy-MM-dd :hh :mm:ss"></fmt:formatDate> <!--格式化数字--> <fmt:formatNumber var="${1/1}" pattern="0"></fmt:formatNumber>
相关文章推荐
- el表达式保留两位小数、使用jstl <fmt:formatNumber>标签保留两位小数
- el表达式保留两位小数、使用jstl <fmt:formatNumber>标签保留两位小数
- el表达式保留两位小数、使用jstl <fmt:formatNumber>标签保留两位小数
- el表达式保留两位小数、使用jstl <fmt:formatNumber>标签保留两位小数
- 【jsp总结】jsp成servlet、错误页面、pageContext九大隐式、静态包含、jsp标签、EL表达式、JSTL、CSS中的路径写法
- web笔记九:jsp脚本、jsp标准动作、EL表达式、JSTL标签
- el表达式保留两位小数、使用jstl <fmt:formatNumber>标签保留两位小数
- el表达式保留两位小数、使用jstl <fmt:formatNumber>标签保留两位小数
- JSTL标签和EL表达式使用笔记
- JAVAWEB开发之Session的追踪创建和销毁、JSP详解(指令,标签,内置对象,动作即转发和包含)、JavaBean及内省技术以及EL表达式获取内容的使用
- el表达式保留两位小数、使用jstl <fmt:formatNumber>标签保留两位小数
- el表达式保留两位小数、使用jstl <fmt:formatNumber>标签保留两位小数
- jsp学习---mvc模式介绍和el表达式,jstl标签库的使用入门
- JSP和El表达式和JSTL标签库使用
- el表达式保留两位小数、使用jstl <fmt:formatNumber>标签保留两位小数
- JSP页面中EL表达式语言和jstl标签库的使用详解
- JSP和El表达式和JSTL标签库使用
- el表达式保留两位小数、使用jstl <fmt:formatNumber>标签保留两位小数
- el表达式保留两位小数、使用jstl <fmt:formatNumber>标签保留两位小数
- el表达式保留两位小数、使用jstl <fmt:formatNumber>标签保留两位小数