2016-03-05 117 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,用于测试代码)。