JSP基础 业 ,精于勤 荒于嬉.
- JSP基础 13.1表达式语言-集合操作
-
发表日期:2015-02-15 21:20:08 | 来源: | 分类:JSP基础
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@page import="java.util.*"%>
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>在此处插入标题</title>
</head>
<body>
<%
List list = new ArrayList();
list.add("张三");
list.add(14);
list.add("www.zhangsan.com");
list.add("zhangsan@163.com");
request.setAttribute("listInfo", list);
%>
<h3>${listInfo[0]}</h3>
<h3>${listInfo[1]}</h3>
<h3>${listInfo[2]}</h3>
<h3>${listInfo[3]}</h3>
<h3>${listInfo[4]}</h3>
<h1>MVC:</h1>
</body>
</html>
- JSP基础 13.2表达式语言-内置对象
-
发表日期:2015-02-15 21:20:08 | 来源: | 分类:JSP基础
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>在此处插入标题</title>
</head>
<body>
<%
pageContext.setAttribute("info", "简单的表达式语句pageContext");
request.setAttribute("info", "简单的表达式语句request");
session.setAttribute("info", "简单的表达式语句session");
application.setAttribute("info", "简单的表达式语句application");
%>
<div>
<h3>${info}</h3>
<p>若不存在info属性默认逐级往下获取pageContext-》request-》session-》application</p>
</div>
<dl>
<dt>分别获得各种对象类型的属性</dt>
<dd>${pageScope.info}</dd>
<dd>${requestScope.info}</dd>
<dd>${sessionScope.info}</dd>
<dd>${applicationScope.info}</dd>
</dl>
<ul>
<li>IP:${pageContext.request.remoteAddr}</li>
<li>SID:${pageContext.session.id}</li>
</ul>
<ul>
<li>接收参数:<%=request.getParameter("ref") %></li>
<li>接收参数:${param.ref}</li>
</ul>
<hr/>
</body>
</html>
- JSP基础 14.绑定数据源
-
发表日期:2015-02-15 21:20:08 | 来源: | 分类:JSP基础
-
在tomcat中server.xml文件中:
//虚拟目录中加入Resource标签
<Context docBase="1.jspDemo" path="/1.jspDemo" reloadable="true" source="org.eclipse.jst.jee.server:1.jspDemo">
<Resource name="jdbc/anyehk"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="root"
password="ice-cold814"
driverClassName="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost:3306/jsp"
/>
</Context>
- JSP基础 15.JSP标签编程
-
发表日期:2015-02-15 21:20:08 | 来源: | 分类:JSP基础
-
- JSP基础 16.0.0 Jstl主要标签分类
-
发表日期:2015-02-15 21:20:08 | 来源: | 分类:JSP基础
-
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
taglibs-standard-impl-1.2.1.jar放到/WEB-INFO/lib/下就可以了。(版本1.2以上)
当然如果不想用远程的标签库:http://java.sun.com/jsp/jstl/core;...
那么我们可以用本地的,把taglibs-standard-impl-1.2.1.jar解压后里面有xx.tId文件复制到/WEB-INFO/lib/下,
然后在web.xml文件中配置,例如:
<jsp-config>//映射标签库文件
<taglib>
<taglib-uri>http://www.canquick.com/jstl/core</taglib-uri>//映射的虚拟访问地址
<taglib-location>/WEB-INFO/lib/c.tid</taglib-location>//真实绝对路径
</taglib>
</jsp-config>
那么我们jsp中可以这样引入,实际上是本地的:
<%@ taglib uri="http://www.canquick.com/jstl/core" prefix="c" %>
- JSP基础 16.1.0 Jstl核心标签库<c:
-
发表日期:2015-02-15 21:20:08 | 来源: | 分类:JSP基础
-
核心标签库中主要有:
<c:catch></c:catch>
<c:choose></c:choose>
<c:forEach></c:forEach>
<c:if test=""></c:if>
<c:import url=""></c:import>
<c:otherwise></c:otherwise>
<c:out value=""></c:out>
<c:param name=""></c:param>
<c:redirect></c:redirect>
<c:remove var=""/>
<c:set></c:set>
<c:url></c:url>
<c:when test=""></c:when>
- JSP基础 16.1.01 Jstl核心标签库<c:out
-
发表日期:2015-02-15 21:20:08 | 来源: | 分类:JSP基础
-
格式:
<c:out value="打印的内容" [escapeXml="[true|false]"] [default="默认值"]/>
或
<c:out value="打印的内容" [escapeXml="[true|false]"]/>
默认值
</c:out>
实例:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSTL-c:核心标签库</title>
</head>
<body>
<%
pageContext.setAttribute("info", "<a href='http://www.canquick.com'>www.canquick.com</a>");
%>
<h2>0:<c:out value="<jstl标签库>" escapeXml="true"></c:out></h2>
//0:<jstl标签库>
<h2>1:<c:out value="${info}" escapeXml="true"></c:out></h2>
//1:<a href='http://www.canquick.com'>www.canquick.com</a>
<h2>2:<c:out value="${info}" escapeXml="false"></c:out></h2>
//2:www.canquick.com
<h2>3:<c:out value="${info2}"></c:out></h2>
//3:
<h2>4:<c:out value="${info2}" default="默认值"></c:out></h2>
//4:默认值
</body>
</html>
- JSP基础 16.1.02 Jstl核心标签库<c:set
-
发表日期:2015-02-15 21:20:08 | 来源: | 分类:JSP基础
-
语法:
1.设置属性:
1.1无标签体写法:
<c:set var="属性名称" value="属性内容" [scope="[page|request|session|application]"]/>
1.2有标签体写法:
<c:set var="属性名称" [scope="[page|request|session|application]"]>
属性内容
</c:set>
2.设置对象:
2.1无标签体写法:
<c:set value="属性内容" target="属性名称" property="属性名称" />
2.2有标签体写法:
<c:set target="对象引用名称" property="属性名称" >
属性内容
</c:set>
实例:
1.设置属性:
<c:set var="info" value="1234" scope="page"/>
${info}//1234 等同于 <%=pageContext.getAttribute("info") %>//1234
2.设置对象:
《jstlSetBean.java》
package test.canquick.eniac.demo;
public class jstlSetBean {
private String info;
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
}
《jsp文件中》
<%
JstlSetBean jsb = new JstlSetBean();
request.setAttribute("jsbSet", jsb);
%>
<c:set value="c:set可以设置对象!" target="${jsbSet}" property="info"/>
${jsbSet.info }//c:set可以设置对象!
- JSP基础 16.1.03 Jstl核心标签库<c:remove
-
发表日期:2015-02-15 21:20:08 | 来源: | 分类:JSP基础
-
语法格式:
<c:remove var="属性名称" scope="page|request|session|application"/>
实例:
<c:set var="info" value="1234" scope="page"/>
${info}//1234
<c:remove var="info"/>
${info}//打印内容为空字符串,因为属性info被删除了
- JSP基础 16.1.04 Jstl核心标签库<c:catch
-
发表日期:2015-02-15 21:20:08 | 来源: | 分类:JSP基础
-
语法格式:
<c:catch var="属性名称">
异常处理块
</c:catch>
实例:
<c:catch var="errMsg">
<%
int num = 10/0;
%>
</c:catch>
${errMsg }//java.lang.ArithmeticException: / by zero
- JSP基础 16.1.05 Jstl核心标签库<c:if
-
发表日期:2015-02-15 21:20:08 | 来源: | 分类:JSP基础
-
语法格式:
<c:if test="判断条件" var="储存判断结果" [scope="[page|request|session|application]"]/>
或
<c:if test="判断条件" var="储存判断结果" [scope="[page|request|session|application]"]>
满足条件执行
</c:if>
<c:if test="${10<30}" var="result" scope="page">
10小于30-${result}//true
</c:if>
- JSP基础 16.1.06 Jstl核心标签库<c:choose、<c:when、<c:otherwise
-
发表日期:2015-02-15 21:20:08 | 来源: | 分类:JSP基础
-
语法格式相对固定,见实例:
<c:choose>
<c:when test="${age==10 }">
<h3>小明今年10岁</h3>
</c:when>
<c:when test="${age==30 }">
<h3>小明今年20岁</h3>
</c:when>
<c:when test="${age==30 }">
<h3>小明今年30岁</h3>
</c:when>
<c:otherwise>
<h3>小明一个条件满足</h3>
</c:otherwise>
</c:choose>
//打印结果是:小明今年10岁
- JSP基础 16.1.07 Jstl核心标签库<c:forEach
-
发表日期:2015-02-15 21:20:08 | 来源: | 分类:JSP基础
-
语法格式:
<c:forEach var="每一个对象的属性名称" items="集合" [varStatus="保存相关成员信息"] [begin="开始位置"] [end="结束位置"] [step="步长"] >
操作代码
</c:forEach>
实例:(数组)
<%
String info[] = {"eniac","anyehk","canquick"};
pageContext.setAttribute("name", info);
%>
<c:forEach items="${name}" var="o">
${o}\
</c:forEach>
//eniac\ anyehk\ canquick\
实例:(集合)
<%
List all = new ArrayList();
all.add("zhangSan");
all.add("liSi");
pageContext.setAttribute("person", all);
%>
<c:forEach items="${person}" var="oo">
${oo}\
</c:forEach>
实例:(Map集合)
<%
Map map = new HashMap();
map.put("name", "zhangSan");
map.put("age", 10);
pageContext.setAttribute("user", map);
%>
<c:forEach items="${user}" var="ooo">
<h5>【${ooo}】</h5>
<h5>键:${ooo.key}</h5>
<h5>值:${ooo.value}</h5>
</c:forEach>
打印结果(这个要好好理解):
【age=10】
键:age
值:10
【name=zhangSan】
键:name
值:zhangSan
- JSP基础 16.1.08 Jstl核心标签库<c:forTokens
-
发表日期:2015-02-15 21:20:08 | 来源: | 分类:JSP基础
-
语法比较固定,见实例:
<%
String info = "www.canquick.com";
pageContext.setAttribute("info", info);
%>
<c:forTokens items="${info}" delims="." var="con">
${con}、
</c:forTokens>
//打印的内容:www、 canquick、 com、 ,实际上就是将字符串用.分割为数组了,然后遍历打印。
- JSP基础 16.1.09 Jstl核心标签库<c:import
-
发表日期:2015-02-15 21:20:08 | 来源: | 分类:JSP基础
-
示例1
<c:import url="demo.jsp" charEncoding="UTF-8"> <c:param name="name">zhangSan</c:param> <c:param name="url" value="http://www.canquick.com"/> </c:import>
- JSP基础 16.1.10 Jstl核心标签库<c:url
-
发表日期:2015-02-15 21:20:08 | 来源: | 分类:JSP基础
-
<c:url value="http://www.baidu.com" var="urlinfo">
<c:param name="author" value="liYanHong"/>
<c:param name="logo" value="baidu"/>
</c:url>
<a href="${urlinfo}">link</a>
//<a href="http://www.baidu.com/?author=liYanHong&logo=baidu">link</a> 也就是地址重写
- JSP基础 16.1.11 Jstl核心标签库<c:redirect
-
发表日期:2015-02-15 21:20:08 | 来源: | 分类:JSP基础
-
语法格式固定,见实例:
<c:redirect url="http://www.baidu.com">
<c:param name="author" value="liYanHong"/>
<c:param name="logo" value="baidu"/>
</c:redirect>
//客户端直接跳转到了-》这个页面 http://www.baidu.com/?author=liYanHong&logo=baidu
- JSP基础 16.2.0.Jstl国际化标签库<fmt:
-
发表日期:2015-02-15 21:20:08 | 来源: | 分类:JSP基础
-
示例1
<fmt:bundle basename=""></fmt:bundle> <fmt:formatDate value=""/> <fmt:formatNumber></fmt:formatNumber> <fmt:message></fmt:message> <fmt:param></fmt:param> <fmt:parseDate></fmt:parseDate> <fmt:parseNumber></fmt:parseNumber> <fmt:requestEncoding/> <fmt:setBundle basename=""/> <fmt:setLocale value=""/> <fmt:setTimeZone value=""/> <fmt:timeZone value=""></fmt:timeZone>
示例2
<%@page import="java.util.Date"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSTL-c:核心标签库if</title> </head> <body> <% pageContext.setAttribute("date", new Date()); %> <h4>系统显示:${date}</h4>//Thu Feb 12 00:19:35 CST 2015 <hr/> <h4> <fmt:formatDate value="${date}" type="both" dateStyle="default" timeStyle="default" var="dt" /> 默认显示:${dt} </h4>//2015-2-12 0:19:35 <h4> <fmt:formatDate value="${date}" type="both" dateStyle="short" timeStyle="short" var="dt" /> 简短显示:${dt} </h4>//15-2-12 上午12:19 <h4> <fmt:formatDate value="${date}" type="both" dateStyle="medium" timeStyle="medium" var="dt" /> 中等显示:${dt} </h4>//2015-2-12 0:19:35 <h4> <fmt:formatDate value="${date}" type="both" dateStyle="long" timeStyle="long" var="dt" /> 较长显示:${dt} </h4>//2015年2月12日 上午12时19分35秒 <h4> <fmt:formatDate value="${date}" type="both" dateStyle="full" timeStyle="full" var="dt" /> 完整显示:${dt} </h4>//2015年2月12日 星期四 上午12时19分35秒 CST <h4> <fmt:formatDate value="${date}" type="both" pattern="yyyy年MM月dd日 HH时mm分ss秒SSS毫秒" var="dt" /> 指定格式:${dt} </h4>//2015年02月12日 00时19分35秒880毫秒 <hr/> <fmt:parseDate value="2015年2月12日 星期四 上午12时08分26秒 CST" type="both" dateStyle="full" timeStyle="full" var="pdt"/> <h4>反格式化日期:${pdt}</h4>//Thu Feb 12 00:08:26 CST 2015 <fmt:parseDate value="2015年02月12日 00时18分44秒860毫秒" type="both" pattern="yyyy年MM月dd日 HH时mm分ss秒SSS毫秒" var="pdt"/> <h4>反格式化指定格式日期:${pdt}</h4>//Thu Feb 12 00:18:44 CST 2015 <hr/> <h4> <fmt:setTimeZone value="HST"/> <fmt:formatDate value="${date}" type="both" dateStyle="full" timeStyle="full" var="dt" /> 设置时区显示:${dt} </h4>//2015年2月11日 星期三 上午06时27分59秒 HST <hr/> <h4> <fmt:setLocale value="en_us"/> 设置英文显示:<fmt:formatDate value="${date}"/> </h4>//Feb 12, 2015 <h4> <fmt:setLocale value="ZH_CN"/> 设置中文显示:<fmt:formatDate value="${date}"/> </h4>//2015-2-12 <hr/> <fmt:requestEncoding value="UTF-8"/> <!-- fmt:bundle 在WEB-INF/classes/文件夹下建立一个msg.properties的文件写入: name = ENIAC age = he is {0} years old! --> <fmt:bundle basename="msg"> <fmt:message key="name" var="nameRef"/> </fmt:bundle> <h4>姓名:${nameRef}</h4>//ENIAC <fmt:bundle basename="msg"> <fmt:message key="age" var="ageRef"> <fmt:param value="34"/> </fmt:message> </fmt:bundle> <h4>年龄:${ageRef}</h4>//he is 34 years old! <hr/> <fmt:setBundle basename="msg" var="m"/> <fmt:message key="name" var="nameRef" bundle="${m}"/> <fmt:message key="age" var="ageRef" bundle="${m}"> <fmt:param value="34"/> </fmt:message> <h4>姓名:${nameRef}</h4>//ENIAC <h4>年龄:${ageRef}</h4>//he is 34 years old! <!-- 其实fmt:setBundle就是bundle的另一种写法而已 --> <hr/> <fmt:formatNumber value="1458744645.65448841" maxIntegerDigits="7" maxFractionDigits="3" groupingUsed="true" var="num"/> <h4>${num }</h4>//8,744,645.654 <fmt:formatNumber value="1458744645.65448841" maxFractionDigits="3" groupingUsed="true" var="num"/> <h4>${num }</h4>//1,458,744,645.654 <fmt:formatNumber value="1458744645.65448841" maxFractionDigits="1" groupingUsed="true" var="num"/> <h4>${num }</h4>//1,458,744,645.7 <fmt:formatNumber value="1458744645.65448841" maxFractionDigits="1" groupingUsed="false" var="num"/> <h4>${num }</h4>//1458744645.7 <fmt:formatNumber value="1458744645.65448841" pattern="##.###E0" var="num"/> <h4>${num }</h4>//14.587E8 <hr/> <fmt:parseNumber value="14.587E8" pattern="##.###E0" var="num"/> <h4>反格式化科学计数法:${num}</h4>//1458700000 <fmt:parseNumber value="3.2%" pattern="00%" var="num"/> <h4>反百分比:${num}</h4>//0.032 </body> </html>
- JSP基础 16.3.0 JSTL-SQL标签库<sql:
-
发表日期:2015-02-15 21:20:08 | 来源: | 分类:JSP基础
-
备注:<sql:标签真的很方便。但是凡是在jsp中,使用<sql:标签的,十个有九个半是业余的,因为没有人会在JSP页面中写SQL语句。因此,本章只做了解即可。
例如一个完整的实例:
我们有一个叫“jsp”的数据库中有张表pet,表内容为:
mysql> select * from pet;
+----+------+-----+
| id | name | age |
+----+------+-----+
| 1 | 花花 | 2 |
| 2 | 惠惠 | 3 |
+----+------+-----+
2 rows in set (0.54 sec)
我们来用<sql:标签读取表内容
<sql:setDataSource driver="org.gjt.mm.mysql.Driver" url="jdbc:mysql://localhost:3306/jsp" user="root" password="123456" var="dbHandle" scope="page"/>//连接数据库,绑定数据库资源句柄dbHandle。
<sql:query var="result" dataSource="${dbHandle}">//用数据库资源句柄dbHandle执行sql语句。返回的结果集为result
select * from pet;
</sql:query>
<h3>一共有${result.rowCount}条记录。</h3>
<table>
<tr>
<th>编号</th>
<th>名字</th>
<th>年龄</th>
</tr>
<c:forEach items="${result.rows}" var="o">
<tr>
<td>${o.id}</td>
<td>${o.name}</td>
<td>${o.age}</td>
</tr>
</c:forEach>
</table>
//显示
一共有2条记录。
编号 名字 年龄 1 花花 2 2 惠惠 3
- JSP基础 16.3.1 JSTL-SQL标签库<sql:setDataSource
-
发表日期:2015-02-15 21:20:08 | 来源: | 分类:JSP基础
-
语法格式:(数据源请见Tomact数据源配置章节)
<sql:setDataSource dataSource="数据源名称" [var=""] [scope=""]/>
或
<sql:setDataSource driver="" url="" user="" password="" [var=""] [scope=""]/>
实例:
<sql:setDataSource dataSource="jdbc/anyehk" var="dbHandle" scope="page"/>
或
<sql:setDataSource driver="org.gjt.mm.mysql.Driver" url="jdbc:mysql://localhost:3306/jsp" user="root" password="ice-123456" var="dbHandle" scope="page"/>
<sql:setDataSource : 设置数据源其实就是帮你连接数据库,最后把var="dbHandle"(数据库资源句柄dbHandle交给你),这时候你就可以执行curd等操作了,接下来可以使用标签<sql:query或<sql:update等执行sql语句