在线等 急! 报错javax.servlet.ServletException: java.lang.NoSuchMethodError:

wt12735 2009-09-15 06:59:18
请看一下报错:

HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: java.lang.NoSuchMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:274)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause

java.lang.NoSuchMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;
org.apache.jsp.login_jsp._jspInit(login_jsp.java:22)
org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:159)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs.


--------------------------------------------------------------------------------

Apache Tomcat/6.0.13

我的数据库:mysql5.0,以及所有的JSP页面 都用“gbk”,我的上传代码:uploadFileServlet.java 代码如下,请问问题出在哪?怎么改?:

package pageconnection;


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import com.jdbc.Jdbc;


public class UploadFileServlet extends HttpServlet{


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String type = "" ;
String titleName ="" ;
String fileName = "";
Jdbc jdbc ;
String path ="";
request.setCharacterEncoding("gbk");

path = request.getRealPath("/image/");
// path = path.trim() ;
//path = "d:/tempImage" ;
// path = "E:\\java\\workspace2\\page\\WebContent\\image" ;
DiskFileItemFactory factory = new DiskFileItemFactory();

factory.setRepository(new File(path));
factory.setSizeThreshold(1024 * 1024);

ServletFileUpload upload = new ServletFileUpload(factory);


try
{
List<FileItem>list = upload.parseRequest(request);
for(FileItem item:list){
if(item.isFormField()){
String name = item.getFieldName();

String value = item.getString();
// String str = new String(request.getParameter("title").getBytes("ISO-8859-1"),"UTF-8");

String value2 = new String(value.getBytes("ISO-8859-1"),"gbk") ;
request.setAttribute(name, value2);
System.out.println(value);
}
else{
String name = item.getFieldName();
String value = item.getName();
System.out.println(value);
File tempFile = new File(item.getName());

fileName = tempFile .getName() ;

request.setAttribute(name, fileName);
System.out.println(fileName);

OutputStream os = new FileOutputStream(new File(path,fileName));
InputStream is = item.getInputStream();

byte[] buffer = new byte[4096];
int length = 0;
while((length = is.read(buffer))>0){
os.write(buffer,0,length);
}
os.close();
is.close();
}
}
}
catch(Exception e){
e.printStackTrace();
}


jdbc = new Jdbc() ;
type = (String)request .getAttribute("select1") ;

titleName = (String )request.getAttribute("titlename");
System.out.println(titleName);
//fileName = type + fileName ;

jdbc .insertNewImage(fileName, titleName, type,new Date().toLocaleString()) ;

request.getRequestDispatcher("/pages/admin/result.html").forward(request, response);
}

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
doPost(request, response) ;
}

}
...全文
3059 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fandyst 2010-08-11
  • 打赏
  • 举报
回复
jar 包冲突,看有没有重复的包,或者是与tomcat自带包版本冲突。
wt12735 2009-09-15
  • 打赏
  • 举报
回复
上面那段时uploadpage.jsp
下面这段时 jididongtai.jsp
<%@ page language="java" contentType="text/html; charset=GBK" %>
<%@page import="java.util.*" %>
<OCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html;charset=GBK">
<head>
<title>xxxxx
</title>
<script type="text/javascript">
stuHover = function() {
var cssRule;
var newSelector;
for (var i = 0; i < document.styleSheets.length; i++)
for (var x = 0; x < document.styleSheets[i].rules.length ; x++)
{
cssRule = document.styleSheets[i].rules[x];
if (cssRule.selectorText.indexOf("LI:hover") != -1)
{
newSelector = cssRule.selectorText.replace(/LI:hover/gi, "LI.iehover");
document.styleSheets[i].addRule(newSelector , cssRule.style.cssText);
}
}
var getElm = document.getElementById("nav").getElementsByTagName("LI");
for (var i=0; i<getElm.length; i++) {
getElm[i].onmouseover=function() {
this.className+=" iehover";
}
getElm[i].onmouseout=function() {
this.className=this.className.replace(new RegExp(" iehover\\b"), "");
}
}
}
if (window.attachEvent) window.attachEvent("onload", stuHover);
</script>
</head>



<body>

En<!--把下面代码加到<body>与</body>之间-->

<center>
<div id="navbar">
<ul id="nav">
<li class="top"><a href="index.html" class="top_link"><span>首页</span></a></li>

<li class="top"><a href="jidijianjie.html" class="top_link"><span>基地简介</span></a></li>
<li class="top"><a href="#" class="top_link"><span>基地动态</span></a></li>
<li class="top"><a href="#" id="services" class="top_link"><span class="down">精品展示</span></a>
<ul class="sub">
<li><a href="dogDisplay.do?type=zangao">藏獒</a></li>
<li><a href="dogDisplay.do?type=labuladuo">拉布拉多犬</a></li>
<li><a href="dogDisplay.do?type=deguomuyan">德国牧羊犬</a></li>
</ul>
</li>
<li class="top"><a href="#" id="services" class="top_link"><span class="down">幼犬展示</span></a>
<ul class="sub">
<li><a href="dogDisplay.do?type=youao">幼獒</a></li>
<li><a href="dogDisplay.do?type=lbldyq">拉布拉多幼犬</a></li>
<li><a href="dogDisplay.do?type=dgmyyq">德国牧羊犬幼犬</a></li>
</ul>
</li>
<li class="top"><a href="dogDisplay.do?type=rongyushi" class="top_link"><span>荣誉室</span></a></li>
<!--<ul class="sub">
<li><a href="dogDisplay.do?type=rongyushi">荣誉室</a></li>
<li><a href="#">犬的挑选</a></li>
</ul>-->

<li class="top"><a href="yangquanxuzhi.html" class="top_link"><span>养犬须知</span></a></li>
<li class="top"><a href="contact.html" class="top_link"><span>联系我们</span></a></li>

</div>
</center>
<% //下面是分页
List list = (ArrayList)request .getAttribute("latestImages") ;
int pN = 1 ; // 当前页
int totalP = 0 ; //总页数
//int Size=list.size();
final int count = 10 ; //每页显示10 条
/*
获取总页数
*/
if( list != null && list.size() > 0){
totalP = (list .size()-1 )/count + 1 ;
}

/*
获取当前页数
*/
String pNstring = request.getParameter("pageN") ;
if( pNstring != null && pNstring != "") {
pN = Integer.valueOf(pNstring) ;
if(pN <= 1 ) pN = 1 ;
if(pN >= totalP ) pN = totalP ;
}

%>



<div>
<h1 align=center>基地动态</h1>
<table width="836" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="red">
<tr>

<%

if(list!=null){

for( int i = 0 ; i<list.size()&& i < count ; i ++ ){
Map map = (HashMap) list.get(i + count*(pN-1)) ;
String name = (String)map.get("name");
String title = (String) map.get("title") ;
String path = (String) map .get("path") ;
//if(list>Size){System.out.println("ok");


if(i % 2 == 0) // 奇数列
{
%>

<td align="center" >

<table width="1%" border="8" cellpadding="0" cellspacing="0" bordercolor="#ffffff">
<tr>
<td align="center"><img src="./image/<%=name.trim() %>" height="199" border="0">
</td>
</tr>
</table>

<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="25" align="center">
<%=title %>
</td>
</tr>
</table> <!--”藏獒一“图片以及图片下面的字-->
</td>
<%
}else{ //偶数列
%>
<td align="center">
<table width="1%" border="8" cellpadding="0" cellspacing="0" bordercolor="#ffffff">
<tr>
<td align="center"><img src="./image/<%=name.trim() %>" height="199" border="0">
</td>
</tr>
</table>

<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center">
<%=title %>
</td>
</tr>
</table>
</td>
</tr> <tr>
<%
}
}
}
%>
</tr>
<tr align = "center"> <td colspan = "2">
<a href="jididongtai.do?pageN=1" >第一页 </a>    
<a href="jididongtai.do?pageN=<%=pN-1%>" >上一页 </a>    
<a href="jididongtai.do?pageN=<%=pN+1%>" >下一页 </a>    
<a href="jididongtai.do?pageN=<%=totalP%>" >最后页 </a>

</td></tr>

<tr><td> </td></tr>
</table>
</div>
</body>
</html>
wt12735 2009-09-15
  • 打赏
  • 举报
回复
恩好的,每个JSP的页面 都是charset=gb2312或者gbk,数据库mysql的characterset=gbk;第二段代码是web.xml
<%@ page language="java" contentType="text/html; charset=gb2312" %>
<OCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<title>上传选择</title>
<body>
<center>
<%
String loginSuccess = (String) request.getSession().getAttribute ("loginSuccess") ;
if(loginSuccess == null && loginSuccess.trim() ==""){
request.setAttribute("error" ,"请登录......" );
request.getRequestDispatcher("/login.jsp").forward(request, response);
//response.sendRedirect("/login.jsp") ;
}
%>
<center>
<form method="POST" action="wtt2.do" id="imageForm" enctype="multipart/form-data">
<table width="483" height="200px" border="0" align="center" color="red" weight="1000px">
<tr>
<p>上传图片:
<select name="select1" size="1" id="select1"
style="BACKGROUND-COLOR: #d9dcff; COLOR: rgb(0,0,128);
font-family:华文行楷 ;font-size:48;" >
<option selected>--要上传的图片类型--</option>
<option value="jididongtai">基地动态</option>
<option value="zangao">藏獒</option>
<option value="labuladuo">拉布拉多犬</option>
<option value="deguomuyan">德国牧羊犬</option>
<option value="youao">幼獒</option>
<option value="lbldyq">拉布拉多幼犬</option>
<option value="dgmyyq">德国牧羊犬幼犬</option>
<option value="rongyushi">荣誉室</option>
</select>
</p>
</tr>
<tr>
<p>选择图片:  <input type="file" name="fileData" size="20" ></p>
</tr>
<tr>
<p>图片标题:  <input type="text" name="titlename" size="20"></p>
</tr>
<tr>
<p align="center"><input type="button" value="提交" onclick="check()" align="center"></p>
</tr>
</table>
</form>
</center>
</body>

<script type="text/javascript">
function check(){

var form = document.getElementById("imageForm");
if( form.select1.value ==''){
alert("请选择图片类型...");
return ;
}
if(form.titlename.value == ''){
alert("请给图片取个标题吧...");
form.titlename.focus();
return ;
}
else {
form .submit();
}
}
</script>
</html>

下面是web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Dogs</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>

<servlet>
<servlet-name>UploadFile</servlet-name>
<servlet-class>pageconnection.UploadFileServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>jididongtai</servlet-name>
<servlet-class>pageconnection.JididongtaiServlet</servlet-class>
</servlet>

<servlet>
<servlet-name>dogsDisplay</servlet-name>
<servlet-class>pageconnection.DogsDisplayServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>UploadFile</servlet-name>
<url-pattern>/wtt2.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jididongtai</servlet-name>
<url-pattern>/jididongtai.do</url-pattern>
</servlet-mapping>


<servlet-mapping>
<servlet-name>dogsDisplay</servlet-name>
<url-pattern>/dogDisplay.do</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>pageconnection.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login.do</url-pattern>
</servlet-mapping>


<jsp-config>

<taglib>
<taglib-uri>/tags/c.tld</taglib-uri>
<taglib-location>/WEB-INF/tld/c-rt.tld</taglib-location>
</taglib>

</jsp-config>

</web-app>
xiaozhangnima 2009-09-15
  • 打赏
  • 举报
回复
xml也贴出来
鲜为人知 2009-09-15
  • 打赏
  • 举报
回复
看了一遍没有找到什么错误,应该是请求过程中出问题了
config_man 2009-09-15
  • 打赏
  • 举报
回复
楼主,你应该把jsp贴出来.

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧