详解测试JSP容器

开发 后端
本文详细介绍测试JSP容器,下面有WEB-INFsrc 原代码(到时候JSP会翻译成.java到这个目录的org.apache.JSP.JSP 下)

由于上面给出例 复杂 。一般人很难理解。我也是 ^_^但仔细看我还是自己写出一个比较简单的,望大家一起讨论。被测试JSP容器

  1. <%@ taglib prefix="html" uri="/WEB-INF/struts-html.tld" %> 
  2. <%@ taglib prefix="c" uri="/WEB-INF/c-1_0-rt.tld" %> 
  3. <html:html> 
  4. <c:if test="${name != pass}"> 
  5. ${name}  <br> 
  6. ${pass} <br> 
  7. <!-- <html:text property="in" ></html:text> --> 
  8. </c:if> 
  9. </html:html> 

ant直接把他放在 eclipes 工程的根目录下 build.xml但有有3个参数要设置 tomcat.home Tomcat 的地址webapp.path 工程中的根目录,下面有WEB-INFsrc 原代码 (到时候JSP会翻译成.java到这个目录的 org.apache.JSP.JSP 下)

  1. <project name="Webapp Precompilation" default="all" basedir="."> 
  2. <!-- tomcat dir --> 
  3. <property name="tomcat.home" value="D:\Tomcat 5.0"/> 
  4. <!-- this=..//WEB-INF (in eclipes)  --> 
  5.   <property name="webapp.path" value=".\WebRoot"/> 
  6. <!-- src (in eclipes) --> 
  7. <property name="src" value="./src"/> 
  8. <target name="jspc"> 
  9. <taskdef classname="org.apache.jasper.JspC" name="jasper2" > 
  10. <classpath id="jspc.classpath"> 
  11. <pathelement location="${java.home}/../lib/tools.jar"/> 
  12. <fileset dir="${tomcat.home}/bin"> 
  13. <include name="*.jar"/> 
  14. </fileset> 
  15. <fileset dir="${tomcat.home}/server/lib"> 
  16. <include name="*.jar"/> 
  17. </fileset> 
  18. <fileset dir="${tomcat.home}/common/lib"> 
  19. <include name="*.jar"/> 
  20. </fileset> 
  21. </classpath> 
  22. </taskdef> 
  23. <jasper2 
  24. validateXml="false" 
  25. uriroot="${webapp.path}" 
  26. webXmlFragment="${webapp.path}/WEB-INF/generated_web.xml" 
  27. outputDir="${src}" /> 
  28. </target> 
  29. <target name="compile"> 
  30. <mkdir dir="${webapp.path}/WEB-INF/classes"/> 
  31. <mkdir dir="${webapp.path}/WEB-INF/lib"/> 
  32. <javac destdir="${webapp.path}/WEB-INF/classes" 
  33. optimize="off" 
  34. debug="on" failonerror="false" 
  35. srcdir="${src}" 
  36. excludes="**/*.smap"> 
  37. <classpath> 
  38. <pathelement location="${webapp.path}/WEB-INF/classes"/> 
  39. <fileset dir="${webapp.path}/WEB-INF/lib"> 
  40. <include name="*.jar"/> 
  41. </fileset> 
  42. <pathelement location="${tomcat.home}/common/classes"/> 
  43. <fileset dir="${tomcat.home}/common/lib"> 
  44. <include name="*.jar"/> 
  45. </fileset> 
  46. <pathelement location="${tomcat.home}/shared/classes"/> 
  47. <fileset dir="${tomcat.home}/shared/lib"> 
  48. <include name="*.jar"/> 
  49. </fileset> 
  50. <fileset dir="${tomcat.home}/bin"> 
  51. <include name="*.jar"/> 
  52. </fileset> 
  53. </classpath> 
  54. <include name="**" /> 
  55. <exclude name="tags/**" /> 
  56. </javac> 
  57. </target> 
  58. <target name="all" depends="jspc,compile"> 
  59. </target> 
  60. <target name="cleanup"> 
  61. <delete> 
  62. <fileset dir="${webapp.path}/WEB-INF/src"/> 
  63. <fileset dir="${webapp.path}/WEB-INF/classes/org/apache/jsp"/> 
  64. </delete> 
  65. </target> 
  66. </project> 

TEST

  1. package jetty.test.supper;  
  2. import javax.servlet.http.HttpServletRequest;  
  3. import javax.servlet.http.HttpServletResponse;  
  4. import org.apache.jsp.jsp.MyJsp_jsp;  
  5. import com.meterware.httpunit.GetMethodWebRequest;  
  6. import com.meterware.httpunit.WebRequest;  
  7. import com.meterware.httpunit.WebResponse;  
  8. import com.meterware.servletunit.InvocationContext;  
  9. import com.meterware.servletunit.ServletRunner;  
  10. import com.meterware.servletunit.ServletUnitClient;  
  11. import junit.framework.TestCase;  
  12. public class JSPCTest extends TestCase{  
  13. private InvocationContext ic = null ;  
  14. protected void setUp() throws Exception {  
  15. ServletRunner sr = new ServletRunner();  
  16. // 向环境中注册 jsp   
  17.         sr.registerServlet("HelloWorld", MyJsp_jsp.class.getName());  
  18. ServletUnitClient  sc = sr.newClient();  
  19. WebRequest request = new GetMethodWebRequest("http://localhost/HelloWorld");  
  20. ic = sc.newInvocation(request);  
  21. }  
  22. public void testJspC() throws Exception{  
  23. HttpServletRequest re =  ic .getRequest();  
  24. HttpServletResponse rq =  ic.getResponse();  
  25. re.setAttribute("name","liukaiyi");  
  26. re.setAttribute("pass","123456");  
  27. MyJsp_jsp is = (MyJsp_jsp) ic.getServlet();  
  28. is._jspService(re,rq);  
  29. WebResponse response = ic.getServletResponse();  
  30. // 输出  
  31.         System.out.println( response.getText() );  
  32. }  

结果是

  1. <html> 
  2. liukaiyi  <br> 
  3. 123456 <br> 
  4. </html> 

以上测试JSP容器是后面用 HttpUnit 和 HtmlUnit 测试JSP容器就不用我说了吧

【编辑推荐】

  1. 在JSP中获取数据库连接
  2. 介绍JSP Action的使用
  3. 简化JSP表达式中代码
  4. 详解JSP向Servlet转换
  5. 简单介绍JSP元素教程
责任编辑:佚名 来源: IT168
相关推荐

2009-09-10 09:48:15

JSP使用FCKedi

2009-07-02 13:10:09

JSP技术

2009-07-03 17:33:06

JSP中调用JavaB

2009-07-06 10:00:31

JSP页面传值

2009-07-21 13:43:53

ASP和JSP比较

2009-07-06 15:03:53

JSP向Servlet

2009-07-01 18:17:32

JSP处理Cookie

2009-07-06 17:07:11

JSP实例

2009-07-06 09:49:26

Servlet JSP

2009-02-01 10:04:44

JSPJavaBeanJavaBean应用

2009-08-03 10:11:44

JSP开发环境配置

2016-08-23 09:16:46

Docker镜像容器

2009-07-06 18:02:34

JSP服务器

2009-02-17 10:40:26

页面跳转JSP教程

2009-07-02 11:39:32

JSP平台

2009-07-01 15:08:50

JSP指令和脚本元素

2010-07-21 16:54:12

EPON

2009-07-02 13:07:12

JSP+Tomcat配

2009-02-11 10:08:53

Cookie属性JSP

2009-07-01 18:41:13

JSP语法
点赞
收藏

51CTO技术栈公众号