HTTP-Status [404] ? [Nicht Gefunden] (Die origin-server nicht finden eine aktuelle representatio)
Erstellt habe ich ein servlet-Projekt mit (jsp,servlet,apache, tomcat, 9, eclipse neon,oracle 11g). Erstellt habe ich index.jsp zur login-details und leitet Sie zur LoginServlet für Benutzername und Passwort Validierungen in der Datenbank-Tabelle. In der index.jsp-ich habe sogar erwähnt, ein "register.jsp" - link zu registrieren, wenn vor der ersten Benutzung). Wenn ich Projekt-index.jsp-Seite wird geöffnet.
Wenn ich user-id und Passwort (manuell eingegebene Benutzername und Passwort in der Datenbank), ist es erfolgreich umleiten mir LoginServlet und dann so auf servlets.
Aber wenn ich auf den link "registrieren", bekomme ich oben genannten Fehler (HTTP-Status [404] ? [Nicht Gefunden] Type Status Report Message /TodayServlet/registrieren.jsp Beschreibung Der origin-server nicht finden eine aktuelle Darstellung für die Ziel-Ressource oder nicht bereit ist, offen zu legen, dass man existiert. Apache Tomcat/9.0.0.M20)
Mein problem ist, aus dem index.jsp, ich bin nicht in der Lage zu öffnen "registrieren.jsp" ("registrieren.jsp durch den Anker-tag in der index.jsp).
Finden Sie meine Anlagen für die Verzeichnis-Struktur und die wichtigsten jsp und servlets und web.xml code.
index.jsp (main code):
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<center>
<form action="LoginServlet" method="post">
enter name:<input type="text" name="name"><br>
enter pass:<input type="password" name="pass"><br>
<a href="register.jsp">New User Register here...!!!</a><br>
<input type="submit" value="login"><br>
</form>
</center>
</body>
</html>
registrieren.jsp (main code):
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<center>
<form action="RegisterServlet" method="post">
enter name:<input type="text" name= "name1"> <br>
enter pass:<input type="text" name= "pass1"><br>
enter email:<input type="text" name="email1"><br>
<input type="submit" value="register"><br>
</form>
</center>
</body>
</html>
RegisterServlet.java (main code):
package com.pack;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class RegisterServlet extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out=res.getWriter();
String uname1=req.getParameter("name1");
String upass1=req.getParameter("pass1");
String uemail1=req.getParameter("email1");
req.setAttribute("username", uname1);
try{
Connection conn=DbConnection.getConnection();
PreparedStatement ps=conn.prepareStatement("insert into register_table values(?,?,?)");
ps.setString(1, uname1);
ps.setString(2, upass1);
ps.setString(3, uemail1);
int i=ps.executeUpdate();
if(i>0){
req.getRequestDispatcher("WelcomeServlet").forward(req, res);
}
else{
out.print("try registering again ");
req.getRequestDispatcher("register.jsp").include(req, res);
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
Ich bin vor kein problem mit anderen servlets (LoginServlet, WelcomeServlet...)
LoginServlet.java (gesamte code):
package com.pack;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
RequestDispatcher rd= null;
res.setContentType("text/html");
PrintWriter out=res.getWriter();
String upassword=req.getParameter("pass");
out.println(upassword);
String uname2=req.getParameter("name");
out.println(uname2);
try{
Connection con=DbConnection.getConnection();
out.println("conection established");
PreparedStatement ps=con.prepareStatement("select * from register_table where username=? and password=?");
ps.setString(1, uname2);
ps.setString(2, upassword);
ResultSet rs= ps.executeQuery();
if(rs.next()){
out.println("username is "+rs.getString(1)+" and pwd is "+rs.getString(2));
req.setAttribute("uid", uname2);
req.getRequestDispatcher("MainServlet").forward(req, res);
}else{
out.println("user name or password incorrect.Check and login again or register");
req.getRequestDispatcher("index.jsp").include(req, res);
}
}catch(Exception e){
e.printStackTrace();
}
}
}
web.xml (code):
<?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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>TodayServlet</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>LoginServlet</display-name>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.pack.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>RegisterServlet</display-name>
<servlet-name>RegisterServlet</servlet-name>
<servlet-class>com.pack.RegisterServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RegisterServlet</servlet-name>
<url-pattern>/RegisterServlet</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>WelcomeServlet</display-name>
<servlet-name>WelcomeServlet</servlet-name>
<servlet-class>com.pack.WelcomeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>WelcomeServlet</servlet-name>
<url-pattern>/WelcomeServlet</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>MainServlet</display-name>
<servlet-name>MainServlet</servlet-name>
<servlet-class>com.pack.MainServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MainServlet</servlet-name>
<url-pattern>/MainServlet</url-pattern>
</servlet-mapping>
</web-app>
Verzeichnis-Struktur:
- TodayServlet( Projekt-name)>src>com.pack>servlets
- web-inf> (web.xml und jsp-Dateien)
- 404 bedeutet einfach, die Datei ist nicht vorhanden, oder der Pfad erwähnt wird, ist falsch.und das Verzeichnis sollte so etwas wie dies für JSPs-Projekt->WebContent->WEB-INF->jsps
- Hi Migriert Taube, überprüfen Sie Bitte mein versehen codes ,die ich erstellt habe, alle erforderlichen jsps.erstellt habe ich die beiden index.jsp und registrieren.jsp.(aber nicht in der Lage, um den Zugang registrieren.jsp aus dem index.jsp)sein nur das problem ist, hier seine throwing error[404 Der origin-server nicht finden eine aktuelle Darstellung für die Ziel-Ressource oder nicht bereit ist, offen zu legen, dass man existiert.]
- Versuchen Sie dieses,Gehen Sie zur Registerkarte Server in eclipse mit der rechten Maustaste auf tomcat-Instanz und wählen Sie Eigenschaften,dann klicken Sie auf "switch Position". und übernehmen Sie die änderungen,starten Sie den server neu.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Obwohl die Ressourcen, die geschützt werden müssen aus dem Http-Zugriff unter WEB-INF.
Normalerweise jsps dient dem Zweck der Präsentation für den Benutzer, das ist, warum befinden Sie sich außerhalb von WEB-INF.
Aber aus irgendwelchen Gründen, wenn Sie darauf bestehen, halten jsp-Datei unter WEB-INF-Ordner als erstellen Sie ein servlet,
und rufen Sie das servlet aus Ihrer Registrierungs-link.
Im servlet zu verwenden, benötigen Sie requestdispatcher Umleitung zu registrieren.jsp
Halten Sie Ihr Servlet-code so aus :(ich gehe davon aus, dass Ihre register.jsp ist erhältlich direkt unter WEB-INF Ordner)
Fügen Sie das mapping in Ihrer web.xml:
Und in Ihrem index.jsp halten wie diesem:
Für mehr Informationen bitte Lesen Sie diese Erklärung sorgfältig.
Wenn Sie Erläuterungen benötigen, bitte lassen Sie mich wissen.
Ich kämpfte mit diesem problem viele Male.
Die Lösung, die ich momentan verwende, ist, ob die webapp (oder den Ordner, wo Sie gehalten, die Ansichten wie jsp) ist unter deployment assembly.
Versuchen Sie dies:
Rechten Maustaste auf das Projekt
> Build Path > Configure Build path > Deployment Assembly > Add(right hand side) > Folder >
(fügen Sie Ihre jsp-Ordner, standardmäßig ist essrc/main/webapp
)Hatte ich diese problem, und es gelöst wurde mit addng neue genaue Quelle: