Servlet混淆,在表单操作

时间:2018-03-14 16:50:23

标签: java xml servlets

我刚从这篇文章doGet and doPost in ServletsServlet returns "HTTP Status 404 The requested resource (/servlet) is not available"中学到了很多东西。但我有点困惑。我的servlet加载然后通过doGet()重定向到某个页面,但是我不能将相同的servlet用于doPost()并指向另一个页面。我看到404错误 - 未找到。

@WebServlet(name = "LoginServlet", displayName="Login Servlet", urlPatterns={"/LoginServlet"}, loadOnStartup=1)
public class LoginServlet extends HttpServlet {

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

        request.getRequestDispatcher("/WEB-INF/view/Home.jsp").forward(request, response);  

    }


    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

       String userName = request.getParameter("userName");
       String password = request.getParameter("password");

       UserAccount userAccount = DataDAO.findUser(userName, password);

       if(userAccount == null) {
           String error = "Invalid User Name or Password";
           request.setAttribute("errorMessage", error);
           RequestDispatcher dispatcher = this.getServletContext().getRequestDispatcher("/WEB_INF/views/Home.jsp");
           dispatcher.forward(request,response);

           return;

       } else{
           request.getSession().setAttribute("user",userAccount);
           //response.sendRedirect("/WEB_INF/views/index.jsp");
           request.getRequestDispatcher("/WEB_INF/views/index.jsp").forward(request,response);
       }

    }

}
编辑:我尝试添加此注释并从web.xml中删除映射,仍未找到servlet ... 这是我一直试图提交的表格:

<form action="${pageContext.request.contextPath}/LoginServlet" method="post" class="form">
                <p>username: <input type="text" name="username" class="username" /></p>
                <p>password: <input type="pass" name="password" class="password" /></p>
                <p><input type="submit" value="submit" id="loginbutton" class="buttons" /></p>
            </form>

web.xml,基于以下内容:@WebServlet annotation with Tomcat 7

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
        <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>flashcardshark.servlet.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/LoginServlet</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>/Home.jsp</welcome-file>
    </welcome-file-list>
    <resource-ref>
        <res-ref-name>jdbc/FlashCardShark</res-ref-name>
        <res-type>javax.sql.ConnectionPoolDataSource</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>
</web-app>

然后我根据这些读数在编译源之前更改了java构建路径以加载已编译的源:HTTP 404 not found(Servlet not found)

Equivalent of "Order and export" of Eclipse in Netbeans

...根据我在那里阅读的内容,我在部署到服务器之前开始清理和构建,仍然没有骰子。

使用NetBeans 8.1,       GlassFish 4.1.1,      Java EE 7 Web和JDK 8

这是我的文件树: enter image description here

当我开始运行项目时,我来到这里(注意网址): enter image description here

然后我输入一些信息并点击“提交”,我得到了这个: enter image description here

服务器日志:

Info:   visiting unvisited references
Info:   visiting unvisited references
Info:   visiting unvisited references
Info:   Loading application [FlashCardSharkWeb] at [/FlashCardSharkWeb]
Info:   FlashCardSharkWeb was successfully deployed in 201 milliseconds.
Severe:   PWC6117: File "null" not found

现在也阅读:https://stackoverflow.com/tags/servlets/info

我也尝试使用get请求访问它但我看到了同样的错误。请帮忙。

编辑:在阅读维基之后,我将所有JSP移动到WEB-INF,将注释更改为@WebServlet("/Home")并将表单更改为:

<form action="Home" method="post" class="form">
                <p>username: <input type="text" name="username" class="username" /></p>
                <p>password: <input type="pass" name="password" class="password" /></p>
                <p><input type="submit" value="submit" id="loginbutton" class="buttons" /></p>
            </form>

...没有骰子,找不到http://localhost:8080/FlashCardSharkWeb/Home

编辑: 在重新阅读Servlet returns "HTTP Status 404 The requested resource (/servlet) is not available"之后,我再次检查NetBeans是否将编译后的servlet放在WEB-INF文件夹中......: enter image description here

1 个答案:

答案 0 :(得分:0)

问题在于doPost()重定向代码应该是这样的:

<b:eval expr='data:blog.locale.country'/>

<script>

 var country = <b:eval expr='data:blog.locale.country'/>;
console.log(country);

</script>
相关问题