我要实现的功能如下:
用get向一个jsp页面一个url过去,目标页面获取到url后,页面如果存在表单,调用ParserForm.java中的方法将form表单解析出来,然后返回一个NodeList(数组).问题出现了。
  <%!
  String url="";
  String sname="";
  String code="gbk";//request.getParameter("code");
  String src="";
 %>
 <% 
 url=request.getParameter("url");
  sname=request.getParameter("sname");
   Parser parser = new Parser(url);//调用htmlParser的解析方法
   parser.setEncoding(parser.getEncoding());
   NodeList form_list = parser.extractAllNodesThatMatch(new NodeClassFilter(FormTag.class));//过滤出Form节点放在NodeList里面  for(int i=0;i<form_list.size();i++){
  Node node=form_list.elementAt(i);
  src=node.toHtml();//将各个form节点转换成html格式(String类型)   %>
    
  <tr>
  <td width="113"> <%=src%></td>
  <td width="187"><textarea name=""><%=sname%></textarea></td>
  <td width="68"><a href="aa" target="formgui" class="STYLE1">提取该表单</a></td>
  </tr>
  <%
}
   %>
 </table>
问题出在红色字体中间,这段代码没有语法错误,包也引入了,可是jsp页面运行就出现下列错误:
 
org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/frc/getsrc.jsp at line 5350:   String code="gbk";//request.getParameter("code");
51:   String src="";
52:  %>
53:  <% 
54:  url=request.getParameter("url");
55:   sname=request.getParameter("sname");
56:    src="";
但是为了测试,我把后面的代码都删掉,只保留了以下一段:
  <%!
  String url="";
  String sname="";
  String code="gbk";//request.getParameter("code");
  String src=""; %>
 <% url=request.getParameter("url");
  sname=request.getParameter("sname");
 
  src=sname;//我让src=url

 
   %>
    
  <tr>
  <td width="113"> <%=src%></td>
  <td width="187"><textarea name=""><%=sname%></textarea></td>
  <td width="68"><a href="aa" target="formgui" class="STYLE1">提取该表单</a></td>
  </tr>
发现错误没有了,页面上显示了接收到的url。我不知道是什么问题,request的时候显然能接收到,但是只要加入下面的“Parser parser = new Parser(url);”也就是我的解析方法就会出错,不知道是什么问题呢?
即使不加解析的方法,一些别的方法都不行,不如对url进行一些处理等等。请求各位给予指点,非常感谢!!!

解决方案 »

  1.   

      <%!
      String url="";
      String sname="";
      String code="gbk";//request.getParameter("code");
      String src=""; %>这里!号干吗用的?
      

  2.   

    回复:
    4楼:
    类级别声明另:
    LZ:
    Parser parser = new Parser(url);//调用htmlParser的解析方法
    parser.setEncoding(parser.getEncoding());
    NodeList form_list = parser.extractAllNodesThatMatch(new NodeClassFilter(FormTag.class));//过滤出Form节点放在NodeList里面for(int i=0;i<form_list.size();i++){
    Node node=form_list.elementAt(i);
    src=node.toHtml();//将各个form节点转换成html格式(String类型)这段里面的某一行出现编译错误,请细查或给出import列表
      

  3.   

    <%@ page language="java" import="java.util.*,org.htmlparser.lexer.Lexer,getFormInf.*,HttpReq.*,org.htmlparser.util.NodeList,org.htmlparser.tags.*,org.htmlparser.Node,org.htmlparser.filters.*,org.htmlparser.*" pageEncoding="gbk"%>
      

  4.   

    可是没有发现编译的错误啊,import列表见下面:
    <%@ page language="java" import="java.util.*,org.htmlparser.lexer.Lexer,getFormInf.*,HttpReq.*,org.htmlparser.util.NodeList,org.htmlparser.tags.*,org.htmlparser.Node,org.htmlparser.filters.*,org.htmlparser.*" pageEncoding="gbk"%>
      

  5.   

    java.util.*
    org.htmlparser.lexer.Lexer
    getFormInf.*
    HttpReq.*
    org.htmlparser.util.NodeList
    org.htmlparser.tags.*
    org.htmlparser.Node
    org.htmlparser.filters.*
    org.htmlparser.*LZ使用的是TomCat是吧?
    应该是说53行的<%以下代码段有问题,建议采取2L的提议,删除一行试验一行另:
    如使用eclipse,并加挂了tomcat插件,可考虑设置debug点加以跟踪
      

  6.   

    在jsp里面导入对应的类了吗?
      把异常错误粘贴出来啊!!!
      

  7.   

    这里的<%! %>声明类中的default成员变量检查下Parser类有没有异常,要不然,你得一行行检查啦 
      

  8.   

    经过一行行添加后,发现添加到NodeList form_list = parser.extractAllNodesThatMatch(new NodeClassFilter(FormTag.class));//过滤出Form节点放在NodeList里面
    这一句就出现了那个错误,但是这个地方没有异常啊,也没有什么错误啊
      

  9.   

    在jsp内添加:
    System.out.println(parser.extractAllNodesThatMatch(new NodeClassFilter(FormTag.class)));输出到后台看一下