转载

详解测试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容器就不用我说了吧

正文到此结束
Loading...