本问题已经有最佳答案,请猛点这里访问。
我能够按照user2821894的建议再次使我的应用程序正常运行,但是在尝试调用servlet tomcat 7之后,它再次停止工作!
如果我尝试删除调用servlet的代码,则我的Web应用程序将正常工作!!
一旦我对servlet遇到问题,tomcat将停止工作。
我在eclipse上启动Web项目时遇到问题。 我对Tomcat 7有问题。
所以我从Eclipse中"删除"了tomcat 7,然后再次添加了它(再次是tomcat 7)。
现在我启动我的Web项目没有问题,但是我的servlet有问题。
例如我得到类似的错误
WebServlet cannot be resolved to a type
The attribute value is undefined for the annotation type
我已将servlet-api 3.0.jar添加到我的项目中,但仍然存在这些问题。
这是我的servlet的代码
package Jeans;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.annotation.WebServlet;
import com.sun.java.swing.plaf.windows.TMSchema.Part;
import javax.servlet.http.Part;
@WebServlet("/FileUploadDBServlet")
i got an error here
@MultipartConfig(maxFileSize = 16177215)
public class FileUploadDBServlet extends HttpServlet {
private String dbURL ="db";
private String dbUser ="dbuser";
private String dbPass ="dbpassword";
String messageMio ="da contorllare";
GestioneDB gestioneDB;
boolean connessione;
Connection conn;
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String giorno= request.getParameter("giorno");
String mese= request.getParameter("mese");
String anno= request.getParameter("anno");
String dataFormatoItaliano = giorno +"-" + mese +"-" + anno;
String titolo = request.getParameter("titolo");
String titoletto = request.getParameter("titoletto");
String testoMouse = request.getParameter("testoMouse");
String link = request.getParameter("link");
String data = dataFormatoItaliano;
String testo = request.getParameter("testo");
i got an error here
Part filePart = request.getPart("immaginePrincipale");
String didascaliaImmaginePrincipale = request.getParameter("didascaliaImmaginePrincipale");
InputStream immaginePrincipale = null;
if (filePart != null) {
// obtains input stream of the upload file
immaginePrincipale = filePart.getInputStream();
}
String message = null;
try {
gestioneDB = new GestioneDB();
conn = gestioneDB.cn();
gestioneDB.inserimentoNews(titolo, titoletto, testoMouse, link, testo, data, immaginePrincipale, didascaliaImmaginePrincipale);
String sql ="INSERT INTO allegati_news (allegato,didascalia,tipo,id_news,immagine) values (?,?,?,?,?)";
PreparedStatement statement = conn.prepareStatement(sql);
statement.setString(1,"firstName");
statement.setString(2,"lastName");
statement.setInt(3, 1);
statement.setInt(4,1);
if (immaginePrincipale != null) {
statement.setBlob(5, immaginePrincipale);
}
int row = statement.executeUpdate();
if (row > 0) {
message ="File salvato nel db";
}
} catch (SQLException ex) {
message ="ERROR:" + ex.getMessage();
ex.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
request.setAttribute("Message", gestioneDB.getInserimentoNewMessaggio());
getServletContext().getRequestDispatcher("/Message.jsp").forward(request, response);
}
}
}
这是我的web.xml文件
Jeans2
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
prova
prova
Jeans.prova
prova
/prova
FileUploadDBServlet
FileUploadDBServlet
Jeans.FileUploadDBServlet
FileUploadDBServlet
/FileUploadDBServlet
BlobDisplay
BlobDisplay
Jeans.BlobDisplay
BlobDisplay
/BlobDisplay
请张贴一些代码,如果您知道引起错误的地方,请提及这一行,并张贴错误
我添加了我的servlet代码。 无论如何,tomcat开始给我带来问题之后,我还是得到了那些错误。 我从Eclipse中删除了它,然后又添加了它。 在此之前,我的Web应用程序运行良好。
尝试添加servlet-api.jar而不是servelt-api-3.0 jar。停止服务器。刷新项目,然后启动服务器并查看。我认为应该可以。确保您要从tomcat lib文件夹添加servlet-api.jar。假设您的tomcat在C: Tomcat lib中。
在Eclipse中,右键单击project-properties-javabuildpath-add外部jar,然后从tomcat文件夹中选择servlet-api.jar
现在看来可行。
将servlet-api放入项目是一个坏主意.....我建议从stackoverflow.com/questions/7595797/获得答案
谢谢您的解决方案的帮助
右键单击项目--->属性---> Java构建路径--->添加
库... --->服务器运行时---> Apache Tomcat ---->完成。
这对我有用,谢谢塔伦。
此错误的可能原因是使用了错误版本的Servlet API。 Servlet 3.0支持@WebServlet注释。您必须将版本从2.5更改为3.0。要在Eclipse中执行此操作,请右键单击您的项目,然后打开"属性"。从显示页面的左侧菜单中选择Project Facets。然后将动态Web模块构面的版本更改为3.0。
另一个可能的原因可能与您的Tomcat版本有关。 Tomcat从版本7.0开始支持Servlet 3.0。
我已经将Dynamic Web Module设置为3.0。 在tomcat开始给我带来问题之后,我得到了那些错误。 在此之前,我的Web应用程序运行良好
它可能与您的tomcat版本有关。 Tomcat 7提供了servlet api 3.0,但是提供了tomcat6。请注意,我更新了答案。
我有tomcat 7
我建议您从头开始创建项目:)
下载servlet-api.jar将有一个zip文件。不要忘记解压缩它。因为我正在添加zip文件夹,所以无法正常工作。
停止服务器并进行清洁。发布并重新启动。