调用Servlet时返回404,但当使用浏览器的servlet网址时直接起作用

时间:2019-02-27 03:22:39

标签: java jsp servlets

问题:当我直接在浏览器中调用url(URL映射)时,效果很好,但是当我使用post方法从jsp文件中调用servlet时,它不起作用但出现错误:

  

类型状态报告

     

消息/ HelloWorld / myservlet

     

说明原始服务器未找到当前表示   目标资源或不愿意透露其存在。

Jsp页面

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="ISO-8859-1">
    <title>Hello World</title>
    </head>
    <body>
        <form method="post"  action="myservlet">
            <input type="submit" value ="send">
        </form>
    </body>
    </html>

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/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
 id="WebApp_ID" version="3.0">
    <display-name>helloworld2</display-name>
    <servlet>
        <servlet-name>myservlet</servlet-name>
        <servlet-class>apress.helloworld.HelloWorld</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>myservlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

Servlet代码:

    package apress.helloworld;

    import java.io.IOException;
    import java.io.PrintWriter;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;


    public class HelloWorld extends HttpServlet{

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    {
        //System.out.println("Get Method Called");

          try { response.setContentType("text/html");
        `enter code here`  PrintWriter printwriter = response.getWriter(); 
          printwriter.println("<h2>");
          printwriter.println("Hello World");
          printwriter.println("</h2>"); 
          } 
          catch
          (IOException ex) 
          { ex.printStackTrace(); }


    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub

          try { resp.setContentType("text/html");
          PrintWriter printwriter = resp.getWriter(); 
          printwriter.println("<h2>");
          printwriter.println("Hello World");
          printwriter.println("</h2>"); 
          } 
          catch
          (IOException ex) 
          { ex.printStackTrace(); }


        }



   }

1 个答案:

答案 0 :(得分:0)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="ISO-8859-1">
    <title>Hello World</title>
    </head>
    <body>
        <form method="post"  action="hello">
            <input type="submit" value ="send">
        </form>
    </body>
    </html>

使用上面的代码 以HTML形式action =“ url-mapping”的形式,您必须提到servlet的url模式,而不是servlet名称,请参考您的web.xml