视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
html与jsp开发分离技术_MySQL
2020-11-09 17:07:28 责编:小采
文档


在传统的JSP程序中,我们将HTML代码与Java代码混合在一起编写,这样虽然方便,但同时也导致页面难以维护,HTML开发人员和JSP开发人员负担加重,我们可以将这种传统的技术成为页面拉数据技术。

怎样才能做到将HTML开发和JSP开发分离呢?答案就是使用Tag技术,通过使用Tag技术,我们就可以在页面程序中不出现JSP代码,在需要数据的地方,大家先约定好标签,然后由Tag的后台处理程序去替换这些标签,显示数据。我称这种技术叫做向页面推数据,页面只要定义好格式就行了。这样,我们可以让HTML开发人员专注于页面的外观,而Java程序员则不用理会页面显示,专注于后台程序,大大提高了程序的可维护性和方便性。便于各程序员之间的协作开发。

首先你要懂一些Tag技术,然后才能阅读本文。下面是样例程序:

一、首先是替换字符串的replace函数
 // 替换字符串函数
 // String strSource - 源字符串
 // String strFrom  - 要替换的子串
 // String strTo   - 替换为的字符串
 public static String replace(String strSource, String strFrom, String strTo)
 {
   // 如果要替换的子串为空,则直接返回源串
   if(strFrom == null || strFrom.equals(""))
     return strSource;
   String strDest = "";
   // 要替换的子串长度
   int intFromLen = strFrom.length();
   int intPos;
   // 循环替换字符串
   while((intPos = strSource.indexOf(strFrom)) != -1)
   {
     // 获取匹配字符串的左边子串
     strDest = strDest + strSource.substring(0,intPos);
     // 加上替换后的子串
     strDest = strDest + strTo;
     // 修改源串为匹配子串后的子串
     strSource = strSource.substring(intPos + intFromLen);
   }
   // 加上没有匹配的子串
   strDest = strDest + strSource;
   // 返回
   return strDest;
 }
二、Tld文(MyBookTag.tld) 定义你的标签

    PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
    "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd";>

 1.0
 1.2
 
 
  ListBook
  com.book.taglib.ListBookTag
  JSP
 

三、Tag的后台处理文件,负责解释标签(ListBookTag.java)
package com.book.taglib;

import java.util.*;
import java.lang.*;

import com.book.model.bookmodel;
import com.book.utils.StringHelper;

import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.JspWriter;
import javax.servlet.ServletRequest;

public class ListBookTag extends BodyTagSupport {

  // 标志开始位置执行
  public int doStartTag(){
   return EVAL_BODY_BUFFERED;
  }
  // 标志结束位置执行
  public int doEndTag()throws JspTagException {
   int max = 0;
   String ListBody = null;
   int number = 1;
  // 获取页码信息,也就是request对象中的内容
   String serialNo = pageContext.getRequest().getParameter("serialNo");
  // 转换为整数
   try{
    number = Integer.parseInt(serialNo);
   }
   catch(Exception e){
    number = 1;
   }
   if (number < 1)
     number = 1;
   // 获取保存在Session中的数据集,当然这里也可以从数据库中取数据
   Vector bookVector = (Vector)pageContext.getSession().getAttribute("bookVector");
   if(number*10     max = number*10;
   else
     max = bookVector.size();
   if(bookVector.size()>0){
     // 获取标签内部的内容
     BodyContent bc = getBodyContent();
     for (int i = (number - 1) * 10; i < max; i++) {
      // 获取一条记录
      bookmodel model = (bookmodel) bookVector.get(i);
      if (model == null)
       model = new bookmodel();
      // 替换内容(就是在这里输出数据的,替换)
      String body = bc.getString();
      body = StringHelper.replace(body, "$_SerialNo", model.getBookid());
      body = StringHelper.replace(body, "$_BookName", model.getBookname());
      body = StringHelper.replace(body, "$_Author", model.getAuthor());
      body = StringHelper.replace(body, "$_PHouse", model.getPhouse());
      body = StringHelper.replace(body, "$_Price", model.getPrice().toString());
      body = StringHelper.replace(body, "$_index", Integer.toString(i));
      // 向页面输出
      try{
       pageContext.getOut().print(body);
      }
      catch(Exception e){

      }
     }
   }
   return EVAL_PAGE;
  }
}
四、JSP页面(BookList.jsp)
<%@page contentType="text/html; charset=GBK"%>
<%@ taglib uri="/MyBookTag" prefix="MyBookTag" %>


一个基于J2EE的图书DEMO


function returnBack(){
  document.form1.action = "BookAdmin.jsp";
}



图书列表



 

下载本文
显示全文
专题