如何在java中注销会话 我的网站允许使用类似和不同的帐户同时进行多次登录。我尝试对每次登录进行会话验证,但无效。请帮助我解决有关我网站的此问题 这是这个网站已经给出的代码。我尝试使用相同的代码,但它不起作用。问题是什么,请给我解决方案
您需要为身份验证设置一个属性 Login.java如何在java中注销会话 我的网站允许使用类似和不同的帐户同时进行多次登录。我尝试对每次登录进行会话验证,但无效。请帮助我解决有关我网站的此问题 这是这个网站已经给出的代码。我尝试使用相同的代码,但它不起作用。问题是什么,请给我解决方案,java,jsp,Java,Jsp,您需要为身份验证设置一个属性 Login.java public class LogoutController1 extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOExcepti
public class LogoutController1 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession(false);
if(session!=null){
session.invalidate();
session=null;
}
request.getRequestDispatcher("Login.jsp").forward(request,response);
}
}
Logout.java
public class Login extends HttpServlet {
private static final long serialVersionUID = 1L;
public Login() {
super();
}
Connection conn = null;
String next="login.jsp";
String uname,pwd;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
uname=request.getParameter("username");
pwd=request.getParameter("password");
HttpSession session = request.getSession(true);
try
{
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/intranet","root","root");
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from login where username='"+uname+"' and password='"+pwd+"' ");
if(rs != null){
Member mem = new Member();
if(rs.next())
{
mem.setId(rs.getLong("id"));
mem.setFirstName(rs.getString("username"));
mem.setEmail(rs.getString("email"));
session.setAttribute("user", mem);
next = "index.jsp";
}
else
{
next = "login.jsp";
}
}
}
catch(Exception ex)
{
System.out.println(ex);
}
finally
{
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
response.sendRedirect(next);
}
}
}
您需要为身份验证设置一个属性 Login.java
public class LogoutController1 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession(false);
if(session!=null){
session.invalidate();
session=null;
}
request.getRequestDispatcher("Login.jsp").forward(request,response);
}
}
Logout.java
public class Login extends HttpServlet {
private static final long serialVersionUID = 1L;
public Login() {
super();
}
Connection conn = null;
String next="login.jsp";
String uname,pwd;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
uname=request.getParameter("username");
pwd=request.getParameter("password");
HttpSession session = request.getSession(true);
try
{
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/intranet","root","root");
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from login where username='"+uname+"' and password='"+pwd+"' ");
if(rs != null){
Member mem = new Member();
if(rs.next())
{
mem.setId(rs.getLong("id"));
mem.setFirstName(rs.getString("username"));
mem.setEmail(rs.getString("email"));
session.setAttribute("user", mem);
next = "index.jsp";
}
else
{
next = "login.jsp";
}
}
}
catch(Exception ex)
{
System.out.println(ex);
}
finally
{
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
response.sendRedirect(next);
}
}
}
您的代码只显示注销控制器的逻辑。确保Logincontroller有一些逻辑检查是否有会话正在运行,如果有,则使当前会话无效。这可以通过在注销控制器中保存一些attirbute/flag并在登录控制器中检索它(验证标志/属性)来实现。您的代码只显示注销控制器的逻辑。确保Logincontroller有一些逻辑检查是否有会话正在运行,如果有,则使当前会话无效。这可以通过在注销控制器中保存一些attirbute/flag并在登录控制器中检索它(验证标志/属性)来实现。您正在设置什么属性?我看不到您正在对其执行身份验证的任何属性?您正在设置什么属性?我看不到您正在对其执行身份验证的任何属性?我必须如何使用next。我是否必须创建局部变量?@Manjunath是的,您必须为next创建一个局部变量。我已经编辑了答案。我必须如何使用next。我是否必须创建局部变量?@Manjunath是的,你必须为next创建一个局部变量。我已经编辑了答案。