我能够让我的应用程序再次运行,遵循user2821894的建议,但在尝试调用servlet后,tomcat 7再次停止工作! 如果我尝试删除我调用我的servlet的代码我的web应用程序doesent'work !! 一旦我遇到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文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>Jeans2</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>
<description></description>
<display-name>prova</display-name>
<servlet-name>prova</servlet-name>
<servlet-class>Jeans.prova</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>prova</servlet-name>
<url-pattern>/prova</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>FileUploadDBServlet</display-name>
<servlet-name>FileUploadDBServlet</servlet-name>
<servlet-class>Jeans.FileUploadDBServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileUploadDBServlet</servlet-name>
<url-pattern>/FileUploadDBServlet</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>BlobDisplay</display-name>
<servlet-name>BlobDisplay</servlet-name>
<servlet-class>Jeans.BlobDisplay</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BlobDisplay</servlet-name>
<url-pattern>/BlobDisplay</url-pattern>
</servlet-mapping>
</web-app>
答案 0 :(得分:8)
尝试添加servlet-api.jar而不是servelt-api-3.0 jar.Stop服务器。刷新项目,然后启动服务器并查看。我认为它应该有效。确保从tomcat lib文件夹添加servlet-api.jar。假设您的tomcat位于C:\ Tomcat \ lib中。 在eclipse中右键单击你的project-properties-javabuildpath-add external jars,然后从你的tomcat文件夹中选择servlet-api.jar
答案 1 :(得分:1)
此错误的可能原因是使用了错误版本的Servlet API。 Servlet 3.0 支持@WebServlet
注释。您必须将版本从2.5更改为3.0。要在eclipse中执行此操作,请右键单击您的项目并打开 Properties 。从显示的页面左侧菜单中选择 Project Facets 。然后将动态Web模块 facet的版本更改为3.0。
另一个可能的原因可能与您的Tomcat版本有关。 Tomcat支持从7.0版开始的Servlet 3.0。
答案 2 :(得分:1)
右键单击项目--->属性---> Java构建路径--->添加 库... --->服务器运行时---> Apache Tomcat ---->完成。
答案 3 :(得分:0)
下载servlet-api.jar会有一个zip文件。不要忘记解压缩它。因为我正在添加zip文件夹,但它无法正常工作。 停止服务器并清理它。发布它并重新启动它。