BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #14285同步于 2010/4/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

【求助】JSP中的import问题,求大牛解答,谢谢

MeForever
2010/4/27镜像同步25 回复
问题代码如下: <%@ page language="java" contentType="text/html; charset=ISO-8859-1" import ="com.test.*" import ="org.apache.commons.httpclient.params.*" import ="org.apache.commons.httpclient.methods.*" import ="org.apache.commons.httpclient.HttpException" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <% String search=request.getParameter("search"); PostTest.execution(search); %> </body> </html> 注:PostTest是我自己编的一个类,里面用到了HTTPClient包和HTMLParser包里的方法和类,execution(String)是PostTest类中的一个静态方法 问题如下: 1.在JSP文件中,因为用到了PostTest.java中的方法execution(),所以在JSP中也要引用那一大堆包,但是我写import ="org.apache.commons.httpclient.methods.PostMethod"时,它会报错,错误为Only a type can be imported. org.apache.commons.httpclient.methods.PostMethod resolves to a package。 2.于是我尝试import ="org.apache.commons.httpclient.methods.*" 这样不会报刚才的错误,但是会说找不到PostMethod类,错误为javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/httpclient/HttpException 和java.lang.NoClassDefFoundError: org/apache/commons/httpclient/HttpException 实在不知道怎么处理了,希望大牛解答,万分感激
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
caomeiliang机器人#1 · 2010/4/28
postTest类贴出来一下 ps:org.apache.commons.httpclient.HttpException这个类你用到了吗?没用到可以不导入的啊
MeForever机器人#2 · 2010/4/28
package com.test; import java.io.IOException; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.params.HttpClientParams; import org.apache.commons.httpclient.params.HttpMethodParams; import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.htmlparser.*; import org.htmlparser.parserapplications.*; import org.htmlparser.filters.*; import org.htmlparser.util.NodeList; import org.htmlparser.tags.LinkTag; import org.htmlparser.tags.TitleTag; import org.htmlparser.nodes.TextNode; import org.htmlparser.util.ParserException; import org.htmlparser.visitors.*; public class PostTest { public static String readTextAndLinkAndTitle (String result) throws Exception { Parser parser; NodeList nodelist; parser = Parser. createParser (result,"utf8"); NodeFilter filterTag = new TagNameFilter ("a"); NodeFilter outerFilter = new TagNameFilter ("h3"); NodeFilter parentFilter = new HasParentFilter(outerFilter); NodeFilter filter = new AndFilter(filterTag,parentFilter); NodeList nodes = parser.extractAllNodesThatMatch(filter); String temp = ""; String title = ""; for (int i = 0; i < nodes.size(); i++) { Node textnode = (Node) nodes.elementAt(i); System.out.println("getText:"+textnode.toPlainTextString().replaceAll(" ","")); System.out.println("================================================="); temp = textnode.toPlainTextString().replaceAll(" ",""); title=title+temp; } /* NodeFilter filterTag2 = new TagNameFilter ("p"); NodeList nodes2 = parser.extractAllNodesThatMatch(filterTag2); temp = ""; String summary = ""; for (int i = 0; i < nodes2.size(); i++) { Node textnode = (Node) nodes2.elementAt(i); System.out.println("getText:"+textnode.toPlainTextString().replaceAll(" ","")); System.out.println("================================================="); temp = textnode.toPlainTextString().replaceAll(" ",""); summary=summary+temp; }*/ return title.replaceAll (" ","");// 返回取得 的信息 } public static void execution(String search) throws Exception { PostMethod postMethod = new PostMethod( "http://news.youdao.com/search"); NameValuePair[] data = { new NameValuePair("q", search), new NameValuePair("start", "10"), new NameValuePair("length", "10"), new NameValuePair("ue", "utf8"), new NameValuePair("s", ""), new NameValuePair("tl", ""), new NameValuePair("keyfrom", "search.index") }; // 将表单的值放入postMethod中 postMethod.setRequestBody(data); HttpClient client = new HttpClient(); client.getHttpConnectionManager().getParams().setConnectionTimeout(1000*60*10); HttpClientParams params = new HttpClientParams(); params.setContentCharset("UTF-8"); client.setParams(params); int status = 0; try { status = client.executeMethod(postMethod); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } if (status == HttpStatus.SC_OK) { try { String result = postMethod.getResponseBodyAsString(); System.out.println(result); java.io.PrintWriter pw = new java.io.PrintWriter(new java.io.FileOutputStream(new java.io.File("E:\\result.html"))); pw.write(result); pw.close(); //抽取文本信息 String x1=readTextAndLinkAndTitle(result);// 调用readTextAndLinkAndTitle 函数进行解析 java.io.PrintWriter pw2=new java.io.PrintWriter(new java.io.FileOutputStream(new java.io.File("E:\\cnki.txt")));// 将抽取结果写入文本文件 pw2.write(x1.toString().trim()); pw2.close(); } catch (IOException e) { e.printStackTrace(); } } postMethod.releaseConnection(); } }【 在 caomeiliang 的大作中提到: 】 : postTest类贴出来一下 : ps:org.apache.commons.httpclient.HttpException这个类你用到了吗?没用到可以不导入的啊
MeForever机器人#3 · 2010/4/28
org.apache.commons.httpclient.HttpException这个类在jPostTest.java中的execution()方法中用到了 【 在 caomeiliang 的大作中提到: 】 : postTest类贴出来一下 : ps:org.apache.commons.httpclient.HttpException这个类你用到了吗?没用到可以不导入的啊
caomeiliang机器人#4 · 2010/4/28
没有任何问题,你怎么编译的? ps: jsp里只需要导入com.test.*,其他的包没必要导入
MeForever机器人#5 · 2010/4/28
我用的Eclipse Java EE IDE ,点的run on sever运行的,服务器为Tomcat6.0。 如果不import那些包它会报错,说找不到那些类,错误为: HTTP Status 500 - -------------------------------------------------------------------------------- type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: An exception occurred processing JSP page /Postcnki.jsp at line 18 15: String search=request.getParameter("search"); 16: 17: 18: PostTest.execution(search); 19: %> 20: 21: </body> Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) root cause javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/httpclient/HttpException org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791) org.apache.jsp.Postcnki_jsp._jspService(Postcnki_jsp.java:77) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) root cause java.lang.NoClassDefFoundError: org/apache/commons/httpclient/HttpException org.apache.jsp.Postcnki_jsp._jspService(Postcnki_jsp.java:66) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) note The full stack trace of the root cause is available in the Apache Tomcat/6.0.24 logs. 【 在 caomeiliang 的大作中提到: 】 : 没有任何问题,你怎么编译的? : ps: jsp里只需要导入com.test.*,其他的包没必要导入
lovemaker机器人#6 · 2010/4/28
jsp确实没必要导入其他jar包 看看是不是jar包有重复或者缺少jar包
MeForever机器人#7 · 2010/4/28
是看PostTest.java类中的jar包吗?可是这个类我建了一个main()方法发现可以运行的,就是在JSP中调用时出了问题。 【 在 lovemaker 的大作中提到: 】 : jsp确实没必要导入其他jar包 : 看看是不是jar包有重复或者缺少jar包
MeForever机器人#8 · 2010/4/28
貌似是部署问题,不过我把这些第三方的包放在了jdk、tomcat、web_inf下,都试过了,还是不行,扭曲了
caomeiliang机器人#9 · 2010/4/29
org/apache/commons/httpclient/HttpException 这个你确定存在????