2016-10-29 4 views
0

に直接することができなかった私持っているテキストフィールドとボタンが含まれているJSPで、以下のフォームJSPはポストJavaEEの中のサーブレットクラスのメソッドとTomcat 9

<form action="/login.do" method="Post"> 
Enter 
<br/><br/> 
Your Name <input type="text" name="name"/> 
<br/><br/> 
Password <input type="text" name="password"/> 
<br/><br/> 
<select name="Gender"> 
<option value="Male">Male</option> 
<option value="Female">Female</option> 
</select> 
<br/><br/> 
<input type="submit" value="Login"/> 

マイサーブレット:

@WebServlet(urlPatterns = "/login.do") 
public class LoginServlet extends HttpServlet{ 
protected void doGet(HttpServletRequest request, javax.servlet.http.HttpServletResponse response) 
     throws ServletException, IOException{ 
    request.getRequestDispatcher("/WEB-INF/view/login.jsp").forward(request, response); 


} 

@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    String name =request.getParameter("name"); 
    String password = request.getParameter("password"); 
    String gender = ((String)request.getParameter("Gender")=="Female")? "Ms.":"Mr."; 

    if(new ValidateUser().validate(name, password)){ 
    request.setAttribute("name", name); 
    request.setAttribute("password", password); 
    request.setAttribute("gender", gender); 
    request.getRequestDispatcher("/WEB-INF/view/welcome.jsp").forward(request, response);; 
    } else { 
    request.setAttribute("errorMes", "Login Failed"); 
    request.getRequestDispatcher("/WEB-INF/view/login.jsp").forward(request, response);;  
    } 
} 

jspページのボタンをクリックすると、サーブレットクラスのdoPost()メソッドがトリガされます。助けてください

/login.doエラー -

は、しかし、私は404 HTTPステータスを得続けます! ...

私はプロジェクトを実行すると、私はこのURLに接続しています私のweb.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!-- webapp/WEB-INF/web.xml --> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> 

    <display-name>To do List</display-name> 
    <welcome-file-list> 
    <welcome-file>login.do</welcome-file> 
    </welcome-file-list> 

:私はボタンにクリックしたときにhttp://localhost:8081/in28Minutes-first-webapp/

私はこれに接続されましたURL:http://localhost:8081/login.doと "HTTP Status 404 - /login.do"エラーが返されます

私は "$ {pageContext.request。 contextPath} /login.doは」、それはまだエラーになります

私は

<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/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.in28minutes</groupId> 
    <artifactId>in28Minutes-first-webapp</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 

<dependencies> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-web-api</artifactId> 
     <version>6.0</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 

<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.2</version> 
       <configuration> 
        <verbose>true</verbose> 
        <source>1.7</source> 
        <target>1.7</target> 
        <showWarnings>true</showWarnings> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.tomcat.maven</groupId> 
       <artifactId>tomcat7-maven-plugin</artifactId> 
       <version>2.2</version> 
       <configuration> 
        <path>/</path> 
        <contextReloadable>true</contextReloadable> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

+1

ブラウザで使用した完全なURLは何ですか? – developer

+1

http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java –

+0

webappのコンテキストパスを前に追加する必要があります。 'action ="/myfirstwebapp/login.do "例えば、"。ハードコーディングを避けるには、$ {pageContext.request.contextPath} /login.do "'または '' JSTLタグを使用します。 –

答えて

0

私の提案は、こののpom.xmlを持っている:

あなたべきformタグのactionパラメータでlocalhost:8081/login.doの代わりに、localhost:8081/in28Minutes-first-webapp/login.doページに置く場所を設定します。次の設定のいずれかを設定してください:action="login.do"action="localhost:8081/in28Minutes-first-webapp/login.do"またはaction="/in28Minutes-first-webapp/login.do"

私は "$ {} pageContext.request.contextPath /login.do" を試してみましたが、それはまだ エラーに

を与えるどのようにあなたの特定のエラーがですか? ${pageContext.request.contextPath}の価値はどうですか?

関連する問題