科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道html与jsp开发分离技术

html与jsp开发分离技术

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

作者:www.soft6.com 来源:www.soft6.com 2007年9月23日

关键字: JSP html Data Pump EXP/IMP

  • 评论
  • 分享微博
  • 分享邮件
在传统的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)

  图书列表

  序号   图示名称   图书作者   出版社   图书价格   操作

  $_SerialNo   $_BookName   $_Author   $_PHouse   $_Price

  编辑

  |

  查看

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章