404错误(Servlet) [英] 404 Error (Servlet)

查看:114
本文介绍了404错误(Servlet)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想编写自己的JavaEE-App。我使用Linux Mint和Glassfish 4作为App-Server。我的Eclipse是Oxygen(EE版)。



我想测试我的客户是否可以登录。



我还没有包含CSS,所以它可能看起来有点无聊。 :D



这些是我在Eclipse中使用的项目:
$ b



这是我的索引HTML:

 < ;! DOCTYPE html> 
< html>
< head>
< meta charset =UTF-8/>
< link rel =stylesheethref =css / styles.css>
< title>网上商店< /标题>
< / head>
< body>
< header>
< hgroup>
< h1 class =title>网上商店< / h1>
< / hgroup>
< nav>
< a href =index.html>主页< / a>
< a href =register.html> Registrieren< / a>
< a href =signin.html> Einloggen< / a>
< a href =sell.html> Verkaufen< / a>
< a href =search.html> Suchen< / a>
< / nav>
< / header>

< footer>
版权
< / footer>
< / body>



Registrieren的意思是sign Einloggen意为登录,Verkaufen意味着卖,Suchen意思是搜索。

这是HTML - 点击Registrieren后显示的地点:

 <!DOCTYPE html> 
< html>
< head>
< meta charset =UTF-8/>
< link rel =stylesheethref =css / styles.css>
< title>网上商店< /标题>
< / head>
< body>
< header>
< hgroup>
< h1 class =title>网上商店< / h1>
< / hgroup>
< nav>
< a href =index.html>主页< / a>
< a href =register.html> Registrieren< / a>
< a href =signin.html> Einloggen< / a>
< a href =sell.html> Verkaufen< / a>
< a href =search.html> Suchen< / a>
< / nav>
< / header>
< form action =registermethod =post>
< fieldset>
< legend> Registrieren< / legend>
< table>
< tbody>
< tr>
< th>
< label for =email>电子邮件:< / label>
< / th>
< td>
< input
type =email
name =email
size =40
maxlength =40
title = muster@beispiel.de
placeholder =E-Mail eingeben
pattern =。{6,40}
required =required>
< / td>
< / tr>
< tr>
< th>
< label for =password>
密码:
< / label>
< / th>
< td>
< input
type =password
name =password
size =10
maxlength =10
title = 6-10 Zeichen
placeholder =
Passwort eingeben
pattern =。{6,10}
required =required>
< / td>
< / tr>
< tr>
< td>< td>
< input type =submit>
< input type =reset>
< / td>
< / tr>
< / tbody>
< / table>
< / fieldset>
< / form>

< footer>
版权
< / footer>
< / body>



这是我的Servlet:

  package de.java2enterprise.onlineshop; 

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

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


@WebServlet(/ register)
public class RegisterServlet扩展HttpServlet {
private static final long serialVersionUID = 1L;

/ **
*默认构造函数。
* /
public RegisterServlet(){
// TODO自动生成的构造函数存根
}

/ **
* HttpServlet#doPost(HttpServletRequest请求,HttpServletResponse
响应)
* /
保护无效doPost(HttpServletRequest请求,HttpServletResponse
响应)
抛出ServletException,IOException {

response.setContentType(text / html; charset = UTF-8);

final String email = request.getParameter(email);
final String password = request.getParameter(password);

final PrintWriter out = response.getWriter();

out.println(<!DOCTYPE html>);
out.println(< html>);
out.println(< body>);
out.println(< br> Ihre Eingaben);
out.println(< br> EMail:+ email);
out.println(< br> EMail:+密码);
out.println(< / body>);
out.println(< / html>);

}

}

写一个Web.xml是因为我只是想用注解来应付它。
现在我有两个问题:



所有Servlet-API的导入都无法解析。但为什么?我确实创建了一个
的Java-Enterprise-Application-Project,并将Webproject onlineshop-war分配给该应用程序。 Glassfish被分配到Java-Enterprise-Application-Project,而Glassfish-Server则被记录到Servlet-API中,不是吗?

和第二个问题:
为什么在输入寄存器HTML中的电子邮件和密码后点击提交后,他找不到Servlet?是否与问题1有关?



非常感谢!

解决方案

第一个问题 -


无法解析所有Servlet-API的导入。但为什么?我做
创建一个Java-Enterprise-Application-Project,并将
Webproject onlineshop-war分配给应用程序。 Glassfish被分配给
的Java-Enterprise-Application-Project,而Glassfish-Server则被分配到
的Servlet-API记录,不是吗?
blockquote>

我使用 eclipse 结合 Java-8 和通过观察你的问题,我简单地在eclipse中创建了一个新的动态Web项目,稍后创建了两个 Tomcat 8.5 web容器 html文件 index.html register.html 以及 Servlet类RegisterServlet

完成所有工作后,我只是首先启动并停止了我的Web容器服务器,稍后再制作a 右键单击项目名称,转到菜单运行方式>在服务器上运行>选择一个现有的服务器,我选择Tomcat 8.5服务器在localhost>从列表中删除所有其他项目而不是当前项目并按下完成



之前我已经选择了我已经通过步骤选择了默认浏览器选项窗口(菜单)>网络浏览器> Chrome



没有这样的web.xml配置文件目录WebContent / WEB-INF /在我的项目中。

因此, Tomcat 8.5服务器将启动并显示 index.html 页面 chrome 新标签页,其中 Optionshop页面出现了,我选择了 Registrieren 链接,然后重定向到 register.html ,我在那里插入了电子邮件ID和密码输入和 servlet映射在新页面中查看了我的电子邮件ID和密码,就是这样。



第二个问题 -
$ b


为什么在输入
之后点击提交后找不到Servlet?和密码在寄存器HTML?是否有问题1

我更改了 @WebServlet / RegisterServlet register.html 我将表格的开始标记替换为

 < form name =registermethod =POSTaction =RegisterServlet> 

也在 Servlet 类中,方法 doGet(HttpServletRequest请求,HttpServletResponse响应)缺少,所以我创建了一个,我的 Servlet 类如下所示:

  package de.java2enterprise.onlineshop; 

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

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

@WebServlet(/ RegisterServlet)
public class RegisterServlet扩展HttpServlet {
private static final long serialVersionUID = 1L;
$ b $ public RegisterServlet(){}

protected void doGet(HttpServletRequest请求,HttpServletResponse响应)
throws ServletException,IOException {}

protected void doPost(HttpServletRequest请求,HttpServletResponse响应)
throws ServletException,IOException {

response.setContentType(text / html);

final String email = request.getParameter(email);
final String password = request.getParameter(password);

final PrintWriter out = response.getWriter();

out.println(<!DOCTYPE html>);
out.println(< html>);
out.println(< body>);
out.println(< br> Ihre Eingaben);
out.println(< br> EMail:+ email);
out.println(< br> EMail:+密码);
out.println(< / body>);
out.println(< / html>);

out.close();


希望这会对你有所帮助,谢谢。


I'd like to code my own JavaEE-App. I'm using Linux Mint and Glassfish 4 as an App-Server. My Eclipse is Oxygen (EE-Version).

I'd like to test if my Costumer is able to sign in.

I haven't include CSS yet so it might look a bit boring. :D

These are my projects in Eclipse:

This is my Index-HTML:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8"/>
   <link rel="stylesheet" href="css/styles.css">
   <title>Onlineshop</title>
</head>
<body>
    <header>
        <hgroup>
        <h1 class="title">Onlineshop</h1>
        </hgroup>
        <nav>
          <a href="index.html">Home</a>
          <a href="register.html">Registrieren</a>
          <a href="signin.html">Einloggen</a>
          <a href="sell.html">Verkaufen</a>
          <a href="search.html">Suchen</a>
        </nav>
</header>

<footer>
        Copyright
</footer>
</body>

"Registrieren" means "sign up", "Einloggen" means "to log in", "Verkaufen" means "to sell" and "Suchen" means "to search".

This is the HTML-Site which is displayed after clicking on "Registrieren":

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8"/>
<link rel="stylesheet" href="css/styles.css">
   <title>Onlineshop</title>
</head>
<body>
    <header>
        <hgroup>
        <h1 class="title">Onlineshop</h1>
        </hgroup>
        <nav>
          <a href="index.html">Home</a>
          <a href="register.html">Registrieren</a>
          <a href="signin.html">Einloggen</a>
          <a href="sell.html">Verkaufen</a>
          <a href="search.html">Suchen</a>
        </nav>
</header>
<form action="register" method="post">
<fieldset>
<legend>Registrieren</legend>
<table>
    <tbody>
    <tr>
        <th>
            <label for="email">Email:</label>
        </th>
        <td>
            <input 
                type="email" 
                name="email"
                size="40"
                maxlength="40"
                title="muster@beispiel.de"
                placeholder="E-Mail eingeben"
                pattern=".{6,40}" 
                required="required">
        </td>
    </tr>
    <tr>
        <th>
            <label for="password">
                Password:
            </label>
        </th>
        <td>
            <input 
                type="password" 
                name="password"
                size="10"
                maxlength="10"
                title="6-10 Zeichen"
                placeholder=
                    "Passwort eingeben"
                pattern=".{6,10}" 
                required="required">
        </td>
    </tr>
    <tr>
        <td/><td>
            <input type="submit">       
            <input type="reset">        
        </td>
    </tr>
</tbody>
</table>
</fieldset>
</form>

<footer>
        Copyright 
</footer>
</body>

This is my Servlet:

package de.java2enterprise.onlineshop;

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

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


@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
 * Default constructor. 
 */
public RegisterServlet() {
    // TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse    
  response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse 
 response) 
        throws ServletException, IOException {

    response.setContentType("text/html;charset=UTF-8");

    final String email = request.getParameter("email");
    final String password = request.getParameter("password");

    final PrintWriter out = response.getWriter();

    out.println("<!DOCTYPE html>");
    out.println("<html>");
    out.println("<body>");
    out.println("<br> Ihre Eingaben");
    out.println("<br> EMail: " + email);
    out.println("<br> EMail: " + password);
    out.println("</body>");
    out.println("</html>");

 }

}

I didn't write an Web.xml because i just want to cope it with annotations. Now I have 2 questions:

All the imports of the Servlet-API can't be resolved. But why? I did create a Java-Enterprise-Application-Project and assigned the Webproject onlineshop-war to the App. And the Glassfish is assigned to the Java-Enterprise-Application-Project and on the Glassfish-Server is the Servlet-API recorded, isn't it?

And the Second question: Why can't he find the Servlet after clicking on submit after typing in the EMail and the Password on the register-HTML? Has it something to do with question 1?

Thank you very much!

解决方案

First Question -

All the imports of the Servlet-API can't be resolved. But why? I did create a Java-Enterprise-Application-Project and assigned the Webproject onlineshop-war to the App. And the Glassfish is assigned to the Java-Enterprise-Application-Project and on the Glassfish-Server is the Servlet-API recorded, isn't it?

I am using eclipse with combination of Java-8 and Tomcat 8.5 web container, by watching your question, I simply created a new dynamic web project in eclipse, later created two html files index.html and register.html along with Servlet class RegisterServlet in the same package you defined.

After doing all work, I simply first started and stopped my web container server, later make a Right click on the project name, Go to menu Run As > Run on Server > Choose an existing server, there I choose the Tomcat 8.5 Server at localhost > Remove all other projects from list Configured instead the current one and pressed the Finish.

Earlier I have selected I have selected the default browser by steps option Window(Menu)>Web Browser>Chrome.

No such web.xml configuration file is there in directory WebContent/WEB-INF/ inside my project.

Thus the Tomcat 8.5 server will start and show the index.html page in chrome new tab, there Optionshop page appeared and I chose the Registrieren link, then redirected to register.html, there I inserted email id and password later pressed Enter and the servlet mapping viewed me my email id and password in fresh page, that's it.

Second Question -

Why can't he find the Servlet after clicking on submit after typing in the EMail and the Password on the register-HTML? Has it something to do with question 1?

I changed the @WebServlet to /RegisterServlet and in register.html I replaced the form starting tag to

<form name="register" method="POST" action="RegisterServlet">

also in Servlet class the method doGet(HttpServletRequest request, HttpServletResponse response) was missing, so I create one and my Servlet class is as follows:

package de.java2enterprise.onlineshop;

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

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

@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public RegisterServlet() { }

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

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

        response.setContentType("text/html");

        final String email = request.getParameter("email");
        final String password = request.getParameter("password");

        final PrintWriter out = response.getWriter();

        out.println("<!DOCTYPE html>");
        out.println("<html>");
        out.println("<body>");
        out.println("<br> Ihre Eingaben");
        out.println("<br> EMail: " + email);
        out.println("<br> EMail: " + password);
        out.println("</body>");
        out.println("</html>");

        out.close();
    }
}

Hope this will help you, thanks.

这篇关于404错误(Servlet)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆