html与jsp开发分离技术

2019-06-20 06:47:25 来源: 恩施信息港

  在传统的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 || uals(""))

  return strSource;

  String strDest = "";

  // 要替换的子串长度

  int intFromLen = ngth();

  int intPos;

  // 循环替换字符串

  while((intPos = dexOf(strFrom)) != -1)

  {

  // 获取匹配字符串的左边子串

  strDest = strDest + bstring(0,intPos);

  // 加上替换后的子串

  strDest = strDest + strTo;

  // 修改源串为匹配子串后的子串

  strSource = bstring(intPos + intFromLen);

  }

  // 加上没有匹配的子串

  strDest = strDest + strSource;

  // 返回

  return strDest;

  }

  二、Tld文(d) 定义你的标签

  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"

  "";

  1.0

  1.2

  ListBook

  stBookTag

  JSP

  三、Tag的后台处理文件,负责解释标签(va)

  package glib;

  import il.*;

  import ng.*;

  import okmodel;

  import ringHelper;

  import pTagException;

  import dyTagSupport;

  import dyContent;

  import geContext;

  import pWriter;

  import rvletRequest;

  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 = tRequest().getParameter("serialNo");

  // 转换为整数

  try{

  number = rseInt(serialNo);

  }

  catch(Exception e){

  number = 1;

  }

  if (number 1)

  number = 1;

  // 获取保存在Session中的数据集,当然这里也可以从数据库中取数据

  Vector bookVector = (Vector)tSession().getAttribute("bookVector");

  if(number*10

  max = number*10;

  else

  max = ze();

  if(ze()0){

  // 获取标签内部的内容

  BodyContent bc = getBodyContent();

  for (int i = (number - 1) * 10; i max; i++) {

  // 获取一条记录

  bookmodel model = (bookmodel) t(i);

  if (model == null)

  model = new bookmodel();

  // 替换内容(就是在这里输出数据的,替换)

  String body = tString();

  body = place(body, "$_SerialNo", tBookid());

  body = place(body, "$_BookName", tBookname());

  body = place(body, "$_Author", tAuthor());

  body = place(body, "$_PHouse", tPhouse());

  body = place(body, "$_Price", tPrice().toString());

  body = place(body, "$_index", String(i));

  // 向页面输出

  try{

  tOut().print(body);

  }

  catch(Exception e){

  }

  }

  }

  return EVAL_PAGE;

  }

  }

  四、JSP页面(p)

  图书列表

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

  $_SerialNo   $_BookName   $_Author   $_PHouse   $_Price

  

  查看

宝宝风寒感冒怎么办
宝宝风寒感冒、风热感冒,傻傻分不清?
宝宝不吃饭怎么办
本文标签: