都市供求信息网(11)

1.5.4 字符串处理类

字符串处理类用来解决程序中经常出现的有关字符串处理的问题,在本系统的字符串处理类中,实现了转换字符串中的HTML字符和将日期型数据转换为字符串的两种操作。下面介绍字符串处理类DoString的实现过程。

(1)创建转换字符串中HTML字符的方法HTMLChange()。代码如下:

例程21 代码位置:光盘\TM\01\src\com\yxq\tools\DoString.java

public static String HTMLChange(String source){

String changeStr="";

changeStr=source.replaceAll("&","&"); //转换字符串中的“&”符号

changeStr=changeStr.replaceAll(" "," "); //转换字符串中的空格

changeStr=changeStr.replaceAll("<","<"); //转换字符串中的“<”符号

changeStr=changeStr.replaceAll(">",">"); //转换字符串中的“>”符号

changeStr=changeStr.replaceAll("\r\n","<br>"); //转换字符串中的回车换行

return changeStr;

}

(2)创建转换日期格式为String型的方法dateTimeChange()。代码如下:

例程22 代码位置:光盘\TM\01\src\com\yxq\tools\DoString.java

public static String dateTimeChange(Date source){

SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String changeTime=format.format(source);

return changeTime;

}

该方法主要是调用java.text.SimpleDateFormat类来转换日期型数据为String型。使用该类进行转换,首先需创建一个SimpleDateFormat类对象,在创建的同时指定了格式化日期为String后的格式为yyyy-MM-dd HH:mm:ss,即“年-月-日 时:分:秒”,然后调用该类的format(java.util.Date date)方法将Date型转换成String型。

1.6 前台页面设计

1.6.1 前台页面概述

页面是用户与程序进行交互的接口,用户可从页面中查看程序显示给用户的信息,程序可从页面中获取用户输入的数据,所以在进行页面的设计时,不仅要从程序开发的角度分析,还要考虑到页面的美观及布局。本系统的前台页面就充分考虑到了这些内容,因此,本系统中所有的前台页面都采用一种页面框架。该页面框架采用二分栏结构,分为4个区域,即页头、侧栏、页尾和内容显示区。都市供求信息网的前台首页运行效果如图1.29所示。

1.6.2  前台页面的技术分析

实现前台页面框架的JSP文件为IndexTemp.jsp,该页面的布局如图1.30所示。

在本系统中,对前台用户所有请求的响应都通过该框架页面显示。在IndexTemp.jsp文件主要采用include动作和include指令来包含各区域所对应的JSP文件。因为页头、页尾和侧栏是不变的,所以可以在框架页面中事先指定;而对于内容显示区中的内容则应根据用户的操作来显示,所以该区域要显示的页面是动态改变的,可通过一个存储在request范围内的属性值指定。例如,对用户访问网站首页的请求,可在处理该请求的类中向request中注册一个属性,并设置其值为default.jsp,这样当响应返回到框架页面后,可在页面中获取该值,根据该值加载相应页面;若用户触发了“发布信息”请求,则设置该属性值为addInfo.jsp,此时在IndexTemp.jsp中就会显示信息发布的页面。

1.6.3  前台页面的实现过程

根据以上的页面概述及技术分析,需要分别创建实现各区域的JSP文件,如实现页头的top.jsp、实现侧栏的left.jsp、页尾文件end.jsp和首页中需要在内容显示区显示的default.jsp等JSP文件。下面主要介绍框架页面IndexTemp.jsp的实现。

以下为IndexTemp.jsp文件中的Scriptlet脚本程序:

例程23  代码位置:光盘\TM\01\view\IndexTemp.jsp

<%@ taglib uri="/struts-tags" prefix="s2"%>

<%

?     String path = request.getContextPath();

?     String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

?     String mainPage=(String)request.getAttribute("mainPage");

  if(mainPage==null||mainPage.equals(""))

  mainPage="default.jsp";

%>

U 代码贴士

u 获取上下文路径,获取的值以“/”开头,然后加上应用名称。

v 生成一个路径,该路径将被用于<base>HTML标识中设置当前路径。其中getScheme()方法用来获取网络协议,getServerName()方法用来获取服务器名称,getServerPort()方法用来获取服务器端口。所以该行代码最终会生成类似“https://localhost:8080/CityInfo/”的路径。

? 获取要在内容显示区中显示的文件的路径,默认为defaulst.jsp,即与IndexTemp.jsp处于同一目录下的default.jsp文件。mainPage变量将被作为<jsp:include>动作标识的属性值。

以下为IndexTemp.jsp文件中实现页面显示的代码:

例程24  代码位置:光盘\TM\01\view\IndexTemp.jsp

<html>

<head>

  <title>都市信息网</title>

?     <base href="<%=basePath%>">

?     <link type="text/css" rel="stylesheet" href="css/style.css">

</head>

<body background="images/back.gif">

    <center>

        <table>

            <tr><td colspan="2"><jsp:include page="top.jsp"/></td></tr> <!-- 包含页头文件 --> 

            <tr>

                <td><jsp:include page="left.jsp"/></td> <!-- 包含侧栏文件 -->

?                   <td><jsp:include page="<%=mainPage%>"/></td>

            </tr>

            <tr><td colspan="2"><%@ include file="end.jsp" %></td></tr> <!-- 包含页尾文件 -->

        </table> 

    </center>

</body>

</html>

U 代码贴士

u 通过<base>HTML标识设置当前路径,这样,在该页面中的所有的URI(包括在该页面中通过include指令与动作标识包含的其他页面中的URI)都是相对于basePath指定的路径。

v 通过<link>HTML标识包含外部CSS样式文件,其中href属性用来指定文件位置。

? 通过include动作标识包含需要在内容显示区显示的JSP文件。

 

读书导航