2016-03-05 122 views
0

我在將servlet添加到我的項目時遇到問題。
我已經使用maven在eclipse ee中創建了一個新的項目webapp。
這是目錄樹,我得到:Tomcat無法讓servlet工作

Deployment Descriptor. 
| 
JavaScript Resources 
| 
Deployed Resources 
| 
Java Resources . 
    | 
    Libraries 
    | 
    src/main/resources 
     | 
     com 
      | 
      saeedh 
        | 
        servlets 
          | 
          start 
           | 
            Login.java 
    | 
    src 
     | 
     main 
      | 
      webapp 
        | 
        index.jsp 
        | 
        register.jsp 
        | 
        css 
        | 
        WEB-INF 
          | 
          web.xml 
      | 
      resources 
        | 
        com 
         | 
         saeedh 
           | 
           servlets 
             | 
             start 
              | 
              Login.java  

我的web.xml:

<?xml version="1.0" encoding="ISO-8859-1"?> 

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
    version="3.1" 
    metadata-complete="true"> 
    <display-name>Archetype Created Web Application</display-name> 
    <servlet> 
    <servlet-name>Login</servlet-name> 
    <servlet-class>com.saeedh.servlets.start.Login</servlet-class> 
    </servlet> 

</web-app> 

我的pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.saeedh</groupId> 
    <artifactId>SocialNetwork</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>SocialNetwork Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.11</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.restlet.jee</groupId> 
     <artifactId>org.restlet</artifactId> 
     <version>2.3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.restlet.jee</groupId> 
     <artifactId>org.restlet.ext.servlet</artifactId> 
     <version>2.3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.6</version> 
    </dependency> 
    </dependencies> 
    <repositories> 
     <repository> 
      <id>maven-restlet</id> 
      <name>Restlet repository</name> 
      <url>https://maven.restlet.com</url> 
     </repository> 
    </repositories> 
    <build> 
    <finalName>SocialNetwork</finalName> 
     <plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.0</version> 
    <configuration> 
    <source>1.7</source> 
    <target>1.7</target> 
    </configuration> 
    </plugin> 
    </plugins> 
    </build> 
</project> 

登錄的servlet:

@WebServlet("/Login") 
public class Login extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

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

     if (request.getParameter("register") != null) { 
      response.sendRedirect("register.jsp"); 
     } 
     else if (request.getParameter("login") != null) { 

     } 

    } 

} 

in dex.jsp,我有兩個提交按鈕,一個是value =「register」,另一個是value =「login」。
如果我運行上面的項目,我得到的主頁是的index.jsp,但如果我上點擊註冊/登錄按鈕,我得到的錯誤:
HTTP狀態404 -/SocialNetwork /登錄
如果我添加映射的servlet:

<servlet-mapping> 
    <servlet-name>Login</servlet-name> 
    <url-pattern>/Login</url-pattern> 
</servlet-mapping> 

我得到的錯誤:
HTTP狀態500 - 錯誤實例化servlet類com.test.Test

還我已經注意到ŧ帽子我沒有得到任何目錄中的編譯servlet(.class)文件,我做錯了什麼?

注:
我發現了很多讓servlet來工作中的問題,但沒有符合我的樹形目錄或我試過的解決方案sugested並沒有奏效。

回答

1

您的Servlet Java源不應該在src/main/resources之下,將它移動到src/main/java。如果您有任何需要從Servlet(或其他Java代碼)讀取的屬性文件,資源包或其他外部資源文件;那些將進入src/main/resources(除非它是爲測試;然後src/test/resouressrc/test/java,用於測試代碼)。