404 错误(小服务程序)
404 Error (Servlet)
我想编写自己的 JavaEE-App。我使用 Linux Mint 和 Glassfish 4 作为应用服务器。我的 Eclipse 是 Oxygen(EE 版)。
我想测试一下我的客户是否可以登录。
我还没有包括 CSS 所以它可能看起来有点无聊。 :D
这些是我在 Eclipse 中的项目:
这是我的索引-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"表示"sign up","Einloggen"表示"to log in","Verkaufen"表示"to sell","Suchen"表示"to search".
这是点击 "Registrieren" 后显示的 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>
<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>
这是我的 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>");
}
}
我没有写 Web.xml 因为我只是想用注释来应付它。
现在我有两个问题:
Servlet-API的所有导入都无法解析。但为什么?我确实创建了一个
Java-Enterprise-Application-Project 并将 Webproject onlineshop-war 分配给 App。 Glassfish 被分配给 Java-Enterprise-Application-Project 并且在 Glassfish-Server 上记录了 Servlet-API,不是吗?
第二个问题:
为什么他在register-HTML输入EMail和密码后点击提交后找不到Servlet?跟问题1有关系吗?
非常感谢!
第一题-
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?
我正在使用 eclipse
结合 Java-8
和 Tomcat 8.5 web container
,通过观察你的问题,我只是在 eclipse 中创建了一个新的 dynamic web project
,后来又创建了两个 html 文件 index.html
和 register.html
以及 Servlet class RegisterServlet
在您定义的同一个包中。
完成所有工作后,我只是先启动和停止我的 Web 容器服务器,然后制作一个 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
。
早些时候我选择了我选择了默认浏览器的步骤选项Window(Menu)>Web Browser>Chrome
。
在我的项目中 WebContent/WEB-INF/ 目录中没有这样的 web.xml 配置文件。
因此 Tomcat 8.5 server
将启动并在 chrome
新选项卡中显示 index.html
页面,Optionshop page
出现,我选择 Registrieren
link,然后重定向到 register.html
,我在那里输入了电子邮件 ID 和密码,然后按 Enter,servlet mapping
在新页面中查看了我的电子邮件 ID 和密码,就是这样。
第二题-
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?
我将 @WebServlet
更改为 /RegisterServlet
并在 register.html
中将表单起始标记替换为
<form name="register" method="POST" action="RegisterServlet">
也在Servlet
class中缺少方法doGet(HttpServletRequest request, HttpServletResponse response)
,所以我创建了一个,我的Servlet
class如下:
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();
}
}
希望对您有所帮助,谢谢。
我想编写自己的 JavaEE-App。我使用 Linux Mint 和 Glassfish 4 作为应用服务器。我的 Eclipse 是 Oxygen(EE 版)。
我想测试一下我的客户是否可以登录。
我还没有包括 CSS 所以它可能看起来有点无聊。 :D
这些是我在 Eclipse 中的项目:
这是我的索引-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"表示"sign up","Einloggen"表示"to log in","Verkaufen"表示"to sell","Suchen"表示"to search".
这是点击 "Registrieren" 后显示的 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>
<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>
这是我的 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>");
}
}
我没有写 Web.xml 因为我只是想用注释来应付它。 现在我有两个问题:
Servlet-API的所有导入都无法解析。但为什么?我确实创建了一个 Java-Enterprise-Application-Project 并将 Webproject onlineshop-war 分配给 App。 Glassfish 被分配给 Java-Enterprise-Application-Project 并且在 Glassfish-Server 上记录了 Servlet-API,不是吗?
第二个问题: 为什么他在register-HTML输入EMail和密码后点击提交后找不到Servlet?跟问题1有关系吗?
非常感谢!
第一题-
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?
我正在使用 eclipse
结合 Java-8
和 Tomcat 8.5 web container
,通过观察你的问题,我只是在 eclipse 中创建了一个新的 dynamic web project
,后来又创建了两个 html 文件 index.html
和 register.html
以及 Servlet class RegisterServlet
在您定义的同一个包中。
完成所有工作后,我只是先启动和停止我的 Web 容器服务器,然后制作一个 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
。
早些时候我选择了我选择了默认浏览器的步骤选项Window(Menu)>Web Browser>Chrome
。
在我的项目中 WebContent/WEB-INF/ 目录中没有这样的 web.xml 配置文件。
因此 Tomcat 8.5 server
将启动并在 chrome
新选项卡中显示 index.html
页面,Optionshop page
出现,我选择 Registrieren
link,然后重定向到 register.html
,我在那里输入了电子邮件 ID 和密码,然后按 Enter,servlet mapping
在新页面中查看了我的电子邮件 ID 和密码,就是这样。
第二题-
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?
我将 @WebServlet
更改为 /RegisterServlet
并在 register.html
中将表单起始标记替换为
<form name="register" method="POST" action="RegisterServlet">
也在Servlet
class中缺少方法doGet(HttpServletRequest request, HttpServletResponse response)
,所以我创建了一个,我的Servlet
class如下:
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();
}
}
希望对您有所帮助,谢谢。