Tomcat服务器下的JSTL与MySql集成:XML、DOM与SAX解析应用

需积分: 12 0 下载量 52 浏览量 更新于2024-09-12 收藏 445KB PDF 举报
在JavaWeb开发中,MySql与JSTL以及MVC模式紧密相连,构成了一个高效的数据管理和页面展示框架。本文将围绕以下几个核心知识点展开: 1. **XML与Tomcat**: XML(Extensible Markup Language)是一种可扩展的标记语言,它被广泛用于数据存储(如数据库配置和交换数据),配置文件管理,以及作为数据传输的载体。在Tomcat环境中,XML文件常用于配置服务器,如web.xml文件用于定义Servlet和Filter。XML文档通常以`.xml`为后缀,如文档声明部分所示,它定义了版本和编码,以确保数据的一致性和正确解析。 2. **XML解析**: XML解析是将XML数据转化为可操作的对象模型的过程。主要有两种方式: - DOM(Document Object Model):将整个XML文档加载到内存中,形成一个树形结构,适合处理少量数据,但可能导致内存溢出。 - SAX(Simple API for XML):基于事件驱动,逐行解析,避免了内存问题,但不能直接修改XML内容,只适用于读取和检索。 解析XML的常用库包括JAXP(Java API for XML Processing)、JDOM和dom4j,其中dom4j因其易用性和性能受到开发者青睐。 3. **DTD与Schema约束**: DTD(Document Type Definition)和Schema是XML文档的元数据,用于定义文档的结构和内容规则,确保数据的规范性。这些约束有助于防止无效的XML数据被解析。 4. **Tomcat服务器**: Tomcat是Java Web应用开发中常见的轻量级Web服务器,它支持Servlet和JSP技术。除了Tomcat,还有其他大型Web应用服务器如WebLogic和WebSphere,它们提供了更全面的功能但系统资源消耗较大。 5. **HTTP协议与Servlets**: HTTP是客户端(如浏览器)与服务器交互的基础协议。在Servlets开发中,通过抓包工具如httpWatch可以分析和调试HTTP请求和响应。HTTP请求包含请求行、请求头、请求体等部分,例如请求方法(GET或POST)、路径、协议版本、 Accept头等,这些都是服务器处理请求的关键信息。 6. **JSTL与MVC模式**: JSTL(JavaServer Pages Standard Tag Library)是Java EE的一部分,提供了一系列预编译的标签库,简化了动态网页的创建。在MVC(Model-View-Controller)设计模式中,JSTL主要负责视图层,即处理页面展示逻辑,而Model层负责数据访问和业务逻辑,Controller则处理用户输入并调用相应的方法。 结合以上内容,学习和掌握MySQL数据库的使用,如何利用JSTL进行高效的页面动态渲染,以及理解如何在MVC架构中集成这些技术,对于构建高性能、结构清晰的Java Web应用程序至关重要。
2014-09-25 上传
<%@ 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"> <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+"&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); %> </body> </html>