注重基础注重思想经典的显示信息的方法
李绪成
2007-3-16
著作权所有,可以任意传播。
若要传播,需注明出处,但不能以盈利为目的。
欢迎交流:blog.csdn/JavaEETeacher
经典的显示信息的方法
本章主要介绍如果控制页面的输出,如何控制查询结果的显示,不可否认的是Web应用的很多功能都要显示数据。
主要包括两部分内容,在显示页面的时候我们需要根据运行结果控制输出的内容。
向用户输出的信息包括静态页面和动态页面:静态页面就是我们编写好的html文件,不包含任何的处理代码,我们不管什么时候访问这些页面效果都是一样的,除非把页面替换了;动态页面也就是包含了动态信
息的页面,这些页面在不同的运行时刻或者由不同的人访问结果都可能不一样,也就是说它的内容会发生变化。
静态页面主要是由美工来完成的,程序员可以不关心。
动态页面在运行过程中会发生变化,但是如果注意的话,这些变化并不是完全没有规律,例如,在一个学生成绩管理系统中,有一个页面用于显示某个学生的信息,这个页面不同的学生访问的时候,看到的结果不一样,但是不能否认的是,不管哪个学生访问,查看的都还是成绩,不同的是每个学生看到的都是自己的成绩。也就是说,动态页面不是完全动态的,而是由静态的格式和动态的信息组成的。我们所关注的是动态信息的输出。
在Web应用中,动态页面的动态信息主要包括以下几个方面:
¾查询的结果
查询的结果可以是单个的信息,例如某个人的信息,记录的个数等,也可以是批量的信息,例如用户列表,图书列表等。基本的信息的输出,我们在第一部分进行介绍,批量信息的输出我们在第三部分进行介绍。
¾执行状态信息
为了系统界面友好,通常系统执行的结果都应该对用户进行反馈,例如添加信息是否成功,查询到的信息有多少条等。这些内容在第一部分介绍。
¾执行的错误信息
在执行的过程中可能会有一些异常产生,例如当用户注册的时候,输入的信息格式可能不合适,用户ID可能已经存在。应该把这些错误信息告诉用户。这部分内容在第一部分进行介绍。
¾根据不同的条件进行不同的显示
系统中不同的用户权限可能不同,所以在访问相同的页面的时候看到的结果也是不同的。有些页面对于登陆用户和非登陆用户来说看到的是不一样的。这部分内容在第二部分进行介绍。
基本信息的输出
假设我们要输出的基本信息包括以下几种类型:
异常信息:通常保存在request对象中,假设名字为myexception,类型为Exception,当然在我们的实际应用中,可以构造自己的异常类型,在使用上没有任何区别。
执行状态信息:通常使用字符串表示执行的状态,然后把字符串保存在request对象中,这里假设我们的状态信息的名字是status,类型是String。
查询的结果(单个的变量):通常保存在request对象中,假设名字为result,类型为String。
查询的结果(对象):通常保存在request对象中,假设名字为resultobject,类型为
Calendar,在实际的应用中应该是我们自己的类型。
其它的一些变量:例如session中的信息、application中的信息、当前页面的信息、请求信息、请求头信息等。我们通过下面的代码完成以上信息的保存:
<%
String result = "平均成绩为75";
//表示查询的结果
Calendar c = Instance();
//表示查询的对象
String status="操作完成";
//表示查询的结果
Exception myexception  = new Exception("异常信息:我们假设的异常!");
//表示异常信息
String sessionInfo = "这是session中的信息!";
//表示session中保存的一般信息
String applicationInfo = "这是application中的信息!";
//表示application中存储的一般信息
String requestInfo = "这是request中的信息!";
//表示request中存储的一般信息
request.setAttribute("result",result);
/
/把查询结果保存到request中
request.setAttribute("resultojbec",c);
//把查询的对象结果保存在request中
request.setAttribute("status",status);
//把状态信息保存在request对象中
request.setAttribute("myexception",myexception);
//把异常信息保存在request对象中
request.setAttribute("requestinfo",requestInfo);
//request存储一些一般信息
session.setAttribute("sessioninfo",sessionInfo);
//在session中保存一些一般信息
application.setAttribute("applicationinfo",applicationInfo);
//在application中保存一些基本信息
%>
多数情况下我们也是这样处理的,但不一定使用Java脚本存储,可以在Servlet中完成这些工作,或者在Struts应用中的Action中实现。
下面我们分别介绍在3种方式下这些信息如何输出:第一种方式是使用Java脚本进行输出,第二种方式是使用标准标签库进行输出,第三种方式是使用现在比较流行的Struts标签库进行输出。
使用Java脚本输出
使用Java脚本进行输出,主要是通过内部对象out的print进行输出,但是需要使用内
部对象request、session、application等的方法获取到相应的信息。除了使用out的println方法之外,可以使用表达式输出,下面的代码演示了两者的用法:
<%
String str = “test”;
out.println(str);
%>
<%=str%>
对于前面定义的信息的获取,使用下面的代码:
使用Java脚本显示信息<br>
<br>
请求头信息:
<%
String pa = Header("Accept-language");
out.println("使用的语言为:"+pa);
%>
<br>请求信息:
<%
String para = Parameter("para");
out.println(para);
%>
<br>状态信息:
<%
String gstatus = (Attribute("status");
out.println(gstatus);
%>
<br>异常信息:
<%
Exception gexception = (Attribute("myexception");
out.String());
%>
<br>查询的结果:
<%
String gresult = (Attribute("result");
out.println(gresult);
%>
<br>查询的对象的信息:
<%
Calendar gc = (Attribute("resultobject");
out.println("现在是:"+gc.get(Calendar.YEAR)+"年"+(gc.get(Calendar.MONTH)+1)+"月"+gc.get(Calendar.DATE)+"日");
%>
<br>request中的一般信息:
<%
String grequestinfo = (Attribute("requestinfo");
%>
<%=grequestinfo%>
<br>session中的一般信息:
<%
String gsessioninfo = (Attribute("sessioninfo");
%>
<%=gsessioninfo%>
<br>application中的一般信息:
<%
String gapplicationinfo = (Attribute("applicationinfo");
%>
<%=gapplicationinfo%>
需要注意几点:
第一, 需要在前面引入java.util.Calendar类;
第二, 如果要运行需要把前面的代码放在这段代码之前,或者分别保存两个代码,然后再前面的代码中增加一行<jsp:forward>语句,跳转到后者。
第三, 在运行的时候,需要在请求的后面添加“?para=ffff”,其中“ffff”可以随便写,目的是传值,与表单提交的作用是相同的。
第四, request的getHeader方法用于获取请求头信息,参数是请求头中的某个属性,代码中的参数“Accept-language”是指使用的默认语言。
部署、运行程序,在地址栏中输入下面的请求:
localhost:8080/display/display.jsp?para=fffff
会得到下面的运行结果:
使用Java脚本显示信息
请求头信息: 使用的语言为:zh-cn
请求信息: fffff
状态信息:操作完成
异常信息: java.lang.Exception: 异常信息:我们假设的异常!
查询的结果:平均成绩为75
查询的对象的信息:现在是:2006年2月9日
request中的一般信息:这是request中的信息!
session中的一般信息:这是session中的信息!
application中的一般信息:这是application中的信息!
使用标准标签库输出
使用标准标签库进行输出,主要使用标准标签库中的<c:out>标签,但前提需要把标签标签库引入:
<%@ taglib uri="java.sun/jsp/jstl/core" prefix="c" %>
并且要保证相应的tld文件和压缩包文件在相应的位置,如果你使用集成开发环境,这些工作不需要自己动手,系统会自动完成。下面的代码完成了和上面相同的功能:使用标准标签库显示信息<br>
<br>请求头信息:
${header["accept-language"]}
<br>请求信息:
<c:out value="${param.para}">
</c:out>
<br>状态信息:
<c:out value="${requestScope.status}">
</c:out>
<br>异常信息:
<c:out value="${ption}">
</c:out>
<br>查询的结果:
<c:out value="${sult}">
</c:out>
<br>查询的对象的信息:
${sultobject["time"]}
<br>request中的一般信息:
<c:out value="${questinfo}">
</c:out>
<br>session中的一般信息:
getattribute方法返回类型<c:out value="${sessionScope.sessioninfo}">
</c:out>
<br>application中的一般信息:
<c:out value="${applicationScope.applicationinfo}">
</c:out>
这个代码看起来要比使用Java脚本来的简单,但是代价是多了标注标签库的实现文件和tld文件。
主要的代码是两种输出语句:
使用表达式语言:${header["accept-language"]}
使用<c:out>标签:<c:out value="${applicationScope.applicationinfo}"></c:out>
这个运行结果与上面的运行结果基本相同,只是显示时间的地方不太一样,运行的方式相同,运行后的结果为:
使用标准标签库显示信息
请求头信息: zh-cn
请求信息: fffff
状态信息:操作完成
异常信息: java.lang.Exception: 异常信息:我们假设的异常!
查询的结果:平均成绩为75
查询的对象的信息:Thu Feb 09 16:23:03 CST 2006
request中的一般信息:这是request中的信息!
session中的一般信息:这是session中的信息!
application中的一般信息:这是application中的信息!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。