jstl mysql 更新_JSTL使用总结(1) 核心标签库和SQL标签库

JSTL是JSP的标准标签库,他提供了许多非常实用的功能,免去了我们自定义标签的麻烦,从而达到在JSP页面中无Scriptlet的效果。

JSTL只是方便了我们开发,如果不使用,并不会妨碍我们开发,一般JSTL是与表达式语言一起使用的。

JSTL1.2的包在MyEclipse中配置struts时能够取得。

一、JSTL配置

把JSTL.jar放入tomcat\lib中,并把JSTL.jar中的tld文件放入WEB-INF中,他所提供的tld文件有:

(1)c.tld核心标签库,提供比如迭代输出等操作。

(2)fmt.tld格式化操作。

(3)sql.tld提供sql查询、更新等操作。

(4)x.tld提供xml的操作。

(5)fn.tld提供字符串的函数操作,比如contains、startsWith等操作。

二、核心标签库

1.

用于输出,一般结构如下:

value表示需要输出的值;

escapeXml表示是否需要将类似

default表示如果value为null,则输出此语句;

2.

用于设置内置对象属性或自定义对象属性,一般结构如下:

(1)

var表示属性的名称;

value表示属性的值;

scope表示存储的范围;

(2)

target表示对象名称;

property表示属性名称;

value表示属性的值;

3.

用于移除内置对象属性;一般结构如下:

var表示属性名称;

scope表示属性范围;

4.

用于捕获异常,类似try - catch;一般结构如下:

语句

var用来保存异常的信息;

5.

类似if语句,一般结构如下:

执行语句

test 表示判断;

var表示保存判断结果;

scope表示结果保存范围;

6.

用于多重判断;一般结构如下:

语句

语句

语句

7.

用于迭代输出;一般结构如下:

${var}

items表示输出的集合;

var表示迭代器的元素;

begin表示从哪个索引开始;

end表示到哪个索引结束;

step表示输出的间隔;

8.

用于分隔字符串并迭代输出;一般结构如下:

${var}

items表示字符串;

delims表示分隔符;

var表示迭代器;

9.

用于客户端跳转,一般结构如下:

    可以传递参数;

10.

包含某个网页,一般结构如下:

var表示保存的导入内容对象。

代码实例:

per.setName("xiazdong");

per.setAge(20);

pageContext.setAttribute("per",per);

%>

姓名:${name}

属性为:${attr}

删除后,属性为:${attr}

30比10大

pageContext.setAttribute("num",15);

%>

num小于15

num大于15

num等于15

List list = new ArrayList();

list.add("A");

list.add("B");

list.add("C");

list.add("D");

pageContext.setAttribute("list",list);

%>

${iter}、

${iter}、

${ite}、

三、SQL标签库

SQL标签库的作用就是只需要一个标签就可以进行数据库连接、增删改查操作;非常方便,但是违背了MVC设计模式:JSP中只有显示操作。

1.

此标签用于进行数据库连接,形如:

这样就连接了数据库。

2.

此标签用于查询,形如:

var中的result存放了结果,查询后怎么显示呢?

startRow表示开始显示的是第几行。

maxRows表示一页能够显示的行数。

因此这个标签可以用于分页。

${iter.name}

${iter.age}

即可进行迭代输出.

${result.rowCount}返回行数;

3.

此标签用于更新数据库记录,形如:

4.进行类似PreparedStatement功能

PreparedStatement能够通过?进行SQL语句的填充,再通过set进行设置。在JSTL中,也是可以实现的,

通过和

形如:

request.setAttribute("n","xiazdong");

${iter.empno}${iter.ename}

request.setAttribute("name","zzz");

request.setAttribute("date",new java.util.Date());

request.setAttribute("id","2");

%>

四、XML标签库

XML标签库的作用就是能够简单操作XML文件,封装了DOM或者SAX的复杂的步骤,比如DOM解析必须:DocumentBuilderFactory、DocumentBulder等一系列的准备;而JSTL只需要一个标签即可。

1.XPath介绍

在XML标签库中必须要使用XPath,XML文件就像一棵树,XPath能够找到XML中的一个节点。

/    表示根节点;

//   表示任意路径子节点;

../   表示父节点;

@ 表示属性

2.

此标签用于输出,形如:

select中的内容就是XPath,我们需要找到某个节点 ,并输出其内容。

3.

此标签用于解析XML文件,形如:

doc表示xml文件对象;

var表示解析完的根节点;

一般都是以:

进行导入并解析;

4.

将xml中某个节点的内容保存到一个属性中去;形如:

select表示XPath路径;

var表示保存的属性;

scope表示保存范围;

5.

此标签类似核心标签库中的,功能是多重判断;

    //是否存在XPath路径

......

6.

迭代输出内容,比如:

xiazdong

20

xzdong

15

我们就可以迭代输出person的内容;因为有两个person;

下面就是迭代输出以上person节点的代码:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>动漫搜索</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <script type="text/javascript"> var xmlhttp; function loadXMLDoc(url,cfun) { // alert("hadhfaf"); xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=cfun; xmlhttp.open("GET",url,true); xmlhttp.send(); } function myfunction(id,times) { //alert("123"); loadXMLDoc("open.jsp?id="+id+"&times="+times+"&t="+Math.random(),function() { //alert(xmlhttp.status); if(xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById(id).innerHTML=xmlhttp.responseText; } }); } </script> <% //currentPage当前显示页数 if (request.getParameter("currentPage") == null||request.getParameter("currentPage").equals("")) { pageContext.setAttribute("currentPage", new Integer(0)); } else { pageContext.setAttribute("currentPage", request .getParameter("currentPage")); } %> <sql:query var="rs" dataSource="jdbc/mysql"> select* from anime </sql:query> <!-- 得到所有记录数 --> <c:set var="resultNum"> <jsp:getProperty name="rs" property="rowCount" /> </c:set> <!-- 每页显示记录数 --> <c:set var="PerPageNum" value="3" /> </head> <style type="text/css"> body{background-color:} </style> <body> <% int perPageNum = Integer.parseInt((String) pageContext .getAttribute("PerPageNum")); int resultNum = Integer.parseInt((String) pageContext .getAttribute("resultNum")); int pageNum; //如果所有记录数除每页显示记录数没有余数-1 if((int)resultNum%perPageNum==0) pageNum = (int)(resultNum / perPageNum-1); else pageNum = (int)(resultNum / perPageNum); pageContext.setAttribute("pageNum", pageNum); %> <div style="border:1px solid #cccccc; width:1100px;margin:100px 0 0 90px"> <table style=" width:1100px;"> <tr> <td>序号</td> <td>热搜动漫</td> <td>动漫简介</td> <td>更新集数</td> <td>搜索指数</td> <td>动漫详情</td> </tr> <c:if test="${currentPage lt 0 }"><!-- 当前显示页小于0 --> <c:set var="currentPage" value="0"></c:set> </c:if> <c:if test="${currentPage gt pageNum}"><!-- 当前显示页大于总页数 --> <c:set var="currentPage" value="${pageNum }"></c:set> </c:if> <c:set var="currentPage" value="${currentPage}" scope="session" /> <!-- 循环查找记录 --> <c:forEach var="row" items="${rs.rows}" begin="${currentPage*PerPageNum}" end="${PerPageNum+currentPage*PerPageNum-1}" > <tr> <td> ${row.id }</td> <td> <img src="image/${row.image}" width="50" height="50"/></td> <td style="width:600"> ${row.introduce}</td> <td> ${row.blues} </td> <td> ${row.times }</td> <c:set var="times" value="${row.times }" scope="session" /> <td> <input type="button" value="展开" onclick="myfunction(${row.id },${row.times })"/> </td> </tr> <tr> <td colspan=6 id="${row.id}"></td> </tr> </c:forEach> </table> <div style="margin:0px 0px 0px 800px"> 总共有${pageNum+1}页-第${currentPage+1}页-<a href="index.jsp?currentPage=${currentPage-1}">上一页</a> - <a href="index.jsp?currentPage=${currentPage+1}">下一页</a> </div> </div> </body> </html>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值