404错误(Servlet) [英] 404 Error (Servlet)
问题描述
我想编写自己的JavaEE-App。我使用Linux Mint和Glassfish 4作为App-Server。我的Eclipse是Oxygen(EE版)。
我想测试我的客户是否可以登录。
我还没有包含CSS,所以它可能看起来有点无聊。 :D
这是我的索引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 $ c
完成所有工作后,我只是首先启动并停止了我的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 ofJava-8
andTomcat 8.5 web container
, by watching your question, I simply created a newdynamic web project
in eclipse, later created two html filesindex.html
andregister.html
along withServlet 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 theindex.html
page inchrome
new tab, thereOptionshop page
appeared and I chose theRegistrieren
link, then redirected toregister.html
, there I inserted email id and password later pressed Enter and theservlet 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 inregister.html
I replaced the form starting tag to<form name="register" method="POST" action="RegisterServlet">
also in
Servlet
class the methoddoGet(HttpServletRequest request, HttpServletResponse response)
was missing, so I create one and myServlet
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屋!