2013-03-20 4 views
1

Я создал сервлет, способный отвечать как на запросы получения, так и на отправку. Проблема заключается в том, что когда я отправляю почтовый запрос с использованием формы, я не получаю ответа. Вот код.Почтовый запрос не работает в моем сервлете, но получить запрос

XmlServlet.java:

package org.skiabox.myservlet; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import java.io.IOException; 
import java.io.PrintWriter; 


public class XmlServlet extends HttpServlet { 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     response.setContentType("text/html"); 
     PrintWriter out = response.getWriter(); 
     String fullName = request.getParameter("fullName"); 
     String userName = request.getParameter("userName"); 
     out.println("Hello from POST method " + userName + "! We know your full name is " + fullName); 

     String prof = request.getParameter("prof"); 
     out.println("<br/>" + "You are a " + prof); 

    } 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     response.setContentType("text/html"); 
     PrintWriter out = response.getWriter(); 

     String userName = request.getParameter("userName"); 
     out.println("Hello " + userName); 
    } 
} 

SimpleForm.html:

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
</head> 
<body> 
    <form method="post" action="/XmlServletPath"> 
     User Name:<input name="userName"/> 
     Full Name:<input name="fullName"/> 
     <br/> 
     <br/> 
     Profession: 
     <input type="radio" name="prof" value="Developer">Developer</input> 
     <input type="radio" name="prof" value="Architect">Architect</input> 
     <input type="submit"/> 
    </form> 
</body> 
</html> 

web.xml:

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

    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 

    <servlet> 
     <description>A simple servlet</description> 
     <display-name>SimpleServlet</display-name> 
     <servlet-name>SimpleServlet</servlet-name> 
     <servlet-class>org.skiabox.myservlet.SimpleServlet</servlet-class> 
    </servlet> 
    <servlet> 
     <servlet-name>XmlServlet</servlet-name> 
     <servlet-class>org.skiabox.myservlet.XmlServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>SimpleServlet</servlet-name> 
     <url-pattern>/SimpleServlet</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>XmlServlet</servlet-name> 
     <url-pattern>/XmlServletPath</url-pattern> 
    </servlet-mapping> 
</web-app> 

SimpleServletProject.iml:

<?xml version="1.0" encoding="UTF-8"?> 
<module type="JAVA_MODULE" version="4"> 
    <component name="FacetManager"> 
    <facet type="web" name="Web"> 
     <configuration> 
     <descriptors> 
      <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/web/WEB-INF/web.xml" /> 
     </descriptors> 
     <webroots> 
      <root url="file://$MODULE_DIR$/web" relative="/" /> 
     </webroots> 
     </configuration> 
    </facet> 
    </component> 
    <component name="NewModuleRootManager" inherit-compiler-output="true"> 
    <exclude-output /> 
    <content url="file://$MODULE_DIR$"> 
     <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> 
    </content> 
    <orderEntry type="inheritedJdk" /> 
    <orderEntry type="sourceFolder" forTests="false" /> 
    <orderEntry type="library" scope="PROVIDED" name="Tomcat 7.0" level="application_server_libraries" /> 
    </component> 
</module> 

настройки Tomcat: picture1

picture2

Страница ввести данные URL: http://localhost:8080/SimpleServletProject/SimpleForm.html

Результат страницы (полностью пустой) URL после нажатия кнопки отправить: http://localhost:8080/XmlServletPath

ответ

3

Ваш сервлет слышит по http://localhost:8080/SimpleServletProject/XmlServletPath, не на http://localhost:8080/XmlServletPath. Ваша форма отправляет неверный URL-адрес.

Просто исправьте URL-адрес формы. Заменить

<form method="post" action="/XmlServletPath"> 

по

<form method="post" action="/SimpleServletProject/XmlServletPath"> 

или, если страница представления формы находится в той же папке, URL в любом случае

<form method="post" action="XmlServletPath"> 

или, если вы беспокоитесь о dynamicness контекстного пути

<form method="post" action="${pageContext.request.contextPath}/XmlServletPath"> 
+0

Это было первое, что я пробовал b ut it failed.Now, что я пытаюсь это снова, он работает. Может, я набрал что-то неправильно. Спасибо за ваш ответ! – skiabox

+0

Добро пожаловать. – BalusC

+0

Фактически я следую этому руководству (https://www.youtube.com/watch?v=MnUJl3NYRRc&list=PLE0F6C1917A427E96), и этот парень управляет тем же результатом, используя простой/XmlServletPath как параметр действия, а не полный путь, но он использует другой идеал (Eclipse). – skiabox

Смежные вопросы