在JSP编程中Struts一般只是用来处理form和业务逻辑很多时候我们还是需要使用 <% java code %> 这样的语句来操作一些输出这样的方式和ASP很类似非常不便于程序代码和页面设计维护网上有很多种分离的解决方案本文只是我个人推荐的一种简单方式
首先看我们要进行分离操作的原文件
Testjsp
>
<html>
<head>
<title>MyJSPTestjspstartingpage< SPAN>title>
< SPAN>head>
<body>
ThisismyJSPpage.<br>
Date:<%=newjava.util.Date().toString()%><br>
File:<inputvalue="<%=request.getServletPath()%>"/>
< SPAN>body>
< SPAN>html>
这个JSP文件中包含了两段JSP代码,分别用来输出当前时间和文件路径。tW.WinGwIt.COm虽然简单,但很有代表性,进行文本输出和HTML控件赋值是我们在JSP文件中写Java代码最主要的原因。接下来,我们开始我们的分离过程。
1. 编写JavaBean
使用 JavaBean Property 来获取所需的日期和文件名。
DemoBean.java
packagecom.mycompany;
importjava.util.Date;
importjavax.servlet.jsp.*;
importjavax.servlet.http.*;
publicclassDemoBean{
privatePageContextpageContext;
publicvoidsetPageContext(PageContextpageContext){
this.pageContext=pageContext;
}
publicStringgetDate(){
returnnewDate().toString();
}
publicStringgetFilename(){
HttpServletRequestrequest=(HttpServletRequest)pageContext.getRequest();
returnrequest.getServletPath();
}
}
在这个名叫 DemoBean 中,我们提供了setPageContext方法用来获取JSP页面的环境对象。有了该对象,我们就可以象在JSP页面中那样使用 request、response、session 进行相关的操作了。
2. 创建包含文件
TestInc.jsp
<% demo.setPageContext(pageContext); %>
这是个简单至极的JSP文件,第一行代码是声明使用JavaBean的语句,第二行代码调用了DemoBean.setPageContext()方法将当前JSP页面的pageContext对象传递到demo对象中,这下你知道DemoBean是如何获得环境对象的吧。至于为什么需要使用这个jsp文件来达到使用JavaBean实现JSP页面的目的?请继续往下看。
3. 修改原JSP文件
Test.jsp
<%@includefile="TestInc.jsp"%>
>
<html>
<head>
<title>MyJSP'Test.jsp'startingpage< SPAN>title>
< SPAN>head>
<body>
ThisismyJSPpage.<br>
Date:<jsp:getPropertyname="demo"property="date"/><br>
File:<inputvalue="<jsp:getPropertyname="demo"property="filename"/>"/>
< SPAN>body>
< SPAN>html>
请注意修改后的JSP文件第一行,我们使用了一个include语句,将我们刚才创建的 TestInc.jsp 文件包含了进来。下面有关日期和文件名的语句也是使用JavaBean的标准语法。运行一下,看看是不是和原来的Test.jsp一样。
include 指令所包含的 jsp 文件,会在第一次运行时和原文件合并,被编译成一个完整的 servlet。
jsp:getProperty 的 property 值从 "getFilename" 变成了 "filename",一定要注意,很多人正在为这个郁闷着呢。
好了,我们总结一下这种使用JavaBean实现JSP页面方式的好处:
1. 修改后的JSP文件不再包含java代码,JavaBean Class更利于程序代码的维护。
2. 程序开发人员使用简单的空白页就可以进行开发,待页面设计人员提交目标页后,只需简单的编辑即可完成替换。
3. html代码变得非常干净,页面设计人员修改页面文件时,不用担心误删除程序代码了。
4. 使用INC文件,可以包含多个JavaBean的声明,利于将不同的任务分解成多个JavaBean,多个程序员可以独立、不受干扰地工作。
5. 开发人员甚至可以直接在该包含文件内部直接创建 Java 方法,就像你原来所熟悉的那样。