Я ищу jsp, в котором я могу получить доступ к данным из сервлета, но в том, что у меня проблема с dipatcher запроса, если я пишу в блоке, он выдает исключение, а в блоке он загружает навсегда.Отобразить базу данных пользователю на JSP
Есть всего 4 файла:
1) сервлета именования servlet.java
import java.io.*;
import java.sql.*;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class servlet extends HttpServlet{
private String username,password;
/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doPost(HttpServletRequest req,HttpServletResponse res) throws IOException,ServletException
{
res.setContentType("text/html");
try{
PrintWriter out = res.getWriter();
Class.forName("com.mysql.jdbc.Driver");
String url,user,pass,query,query1,u,p;
url="jdbc:mysql://localhost:3306/test";
user="root";
pass="root";
//for making Code 4-The best way to work..u have to make below a comment
/*query="select * from student_data";
Connection con=DriverManager.getConnection(url,user,pass);
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(query);*/
//NEW CODE 1-works partially
/*while(rs.next())
{
if(req.getParameter("username").equals(rs.getString("Username")) && req.getParameter("password").equals(rs.getString("Password")))
{
System.out.println("Yout have logged in");
PrintWriter out = res.getWriter();
out.println("U r succesfull");
}
else
{
System.out.println("NOOOOOOOOOOOOOOOO");
}
}*/
//NEW CODE 2-fail
/*
if(rs.getString("Username").equals(req.getParameter("username")))
{
if(req.getParameter("password").equals(rs.getString("Password")))
{
System.out.println("Yout have logged in");
PrintWriter out = res.getWriter();
out.println("U r succesfull");
}
}
else
{
System.out.println("NOOOOOOOOOOOOOOOO");
}
*/
//NEW CODE 3 works
/*
while(rs.next())
{
if(req.getParameter("username").equals(rs.getString("Username")))
{
if(req.getParameter("password").equals(rs.getString("Password")))
{
out.println("<h3>"+"U have logged in succesfully"+"</h3>");
break;
}
else
{
out.println("<h3>"+"Username or password do not match !"+"</h3>");
break;
}
}
else
{
out.println("<h3>"+"You r not a registered user,want to register ??"+"</h3>");
out.println("<a href='registration.jsp'> Registration</a>");
break;
}
}*/
//Code 4-The best way
//query="select * from student_data where Username="+req.getParameter("username")+"AND Password="+req.getParameter("password");
/*u=req.getParameter("username");
p=req.getParameter("password");
query="select * from student_data where Username='"+u+"' AND Password='"+p+"'";
Connection con=DriverManager.getConnection(url,user,pass);
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(query);
if(rs.next())
{
RequestDispatcher r=req.getRequestDispatcher("/Jsp/LoggedIn.jsp");
r.forward(req,res);
}
else
{
out.println("<h3>"+"Username or password do not match !"+"</h3>");
out.println("<a href='registration.jsp'> Registration</a>");
}*/
/*//Code 5-Passing the user to another JSP after validation and using the data sent from servlet!
u=req.getParameter("username");
p=req.getParameter("password");
query="select * from student_data where Username='"+u+"' AND Password='"+p+"'";
Connection con=DriverManager.getConnection(url,user,pass);
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(query);
if(rs.next())
{
//by using setAttri and getAttru
req.setAttribute("Name", u);
// by using HTTPsession
HttpSession sess=req.getSession(true);
sess.setAttribute("Name", u);
RequestDispatcher r=req.getRequestDispatcher("/Jsp/LoggedIn.jsp");
r.forward(req,res);
}
else
{
out.println("<h3>"+"Username or password do not match !"+"</h3>");
out.println("<a href='registration.jsp'> Registration</a>");
}*/
//Code 6-Passing the user to another JSP after validation and display the database to logged user - diplaying just one row-UnderContruction!
u=req.getParameter("username");
p=req.getParameter("password");
query="select * from student_data where Username='"+u+"' AND Password='"+p+"'";
Connection con=DriverManager.getConnection(url,user,pass);
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(query);
if(rs.next())
{
query1="select * from student_data";
Statement stmt1=con.createStatement();
ResultSet rs1=stmt1.executeQuery(query1);
String n,s;
RequestDispatcher r = null;
int i,row;
while(rs1.next())
{
rs1.last();
row=rs1.getRow();
rs1.first();
i=rs1.getInt("Id");
req.setAttribute("Id", i);
n=rs1.getString("Name");
req.setAttribute("Name", n);
s=rs1.getString("Skill");
req.setAttribute("Skill", s);
req.setAttribute("Rows", row);
req.getRequestDispatcher("/Jsp/LoggedIn.jsp").forward(req,res);
}
}
else
{
out.println("<h3>"+"Username or password do not match !"+"</h3>");
out.println("<a href='registration.jsp'> Registration</a>");
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
2) Login.jsp
<%@page import="java.sql.*"%>
<%@ 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>Login Page</title>
</head>
<body>
<form action="servlet" method="post"><fieldset>
<legend>Login</legend>
<hr>
Username: <input type="text" size=10 name="username">
<br>
Password: <input type="text" size=10 name="password">
<br>
<input type="submit" value="Submit"></input>
</fieldset>
<a href='registration.jsp'>New User ??Register </a>
</form>
</body>
</html>
3) LoggedIn.jsp
<%@ 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>LoggedIn</title>
</head>
<body>
<h2>Welcome <%String s=request.getAttribute("Name").toString();
out.println(s); %></h2>
<table border="5" bordercolor="brown" background="yellow">
<tr>
<th>Id</th><th>Name</th><th>Skill</th>
</tr>
<!-- It is just for normal fetching values -->
<tr><td>
<% //by using setAttri and getAttru
//String s=request.getAttribute("Name").toString();
out.println(s);
//by using HttpSession
/* HttpSession sess=request.getSession(false);
String s=sess.getAttribute("Name").toString();
out.println(s);
*/
%></td></tr>
<%--This is for fetching the complete database and creating rows dynamically --%>
<%
int rows=Integer.parseInt(request.getAttribute("Rows").toString());
for(int j=1;j<=rows;j++)
{
%>
<tr>
<td>
<%
out.println(s);
%>
</td>
</tr>
<%
}
%>
</table>
</body>
</html>
4) web.xml
<?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>JspServlet1</display-name>
<welcome-file-list>
<welcome-file>Jsp/Login.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>servlet</servlet-name>
<servlet-class>servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<url-pattern>/servlet</url-pattern>
</servlet-mapping>
</web-app>
Я хотел сделать проверку входа в систему, если пользователь действует он показал всю базу данных пользователей, но метод
1) я имею проблемы в .getRequestDispatcher() в качестве servlet.java если я пишу его за пределами времени, он бросает «java.lang.IllegalStateException: не может переслать после того, как ответ был совершен»
и если я напишу его за пределами, пока он загружается навсегда.
2) У меня проблема с тем, как отображать базу данных для пользователя.
Для вашей второй проблемы я бы рекомендовал использовать [JSTL] (http://docs.oracle.com/javaee/5/tutorial/doc/bnald.html). – hd1
Я не могу сказать причину проблемы 1, но вы можете использовать response.sendRedirect ("/ Jsp/LoggedIn.jsp") для перенаправления на эту страницу после успешного входа в систему – SpringLearner
@ABV Попробуйте использовать оператор возврата –