ورود

View Full Version : سوال: بستن session در jsp



manoto1371
جمعه 28 آذر 1393, 14:32 عصر
سلام دوستان
وقت بخیر
من در صفحه index.jsp خودم یک لینک به نام logout دارم و میخوام وقتی کاربر روش کلیک کرده session کاربر بسته بشه و به صفحه login برگرده.
برای انجام اینکار حتما باید servlet استفاده کنم؟
نمیشه کار کنم تو همون صفحه پردازش بشه؟
ممنون میشم راهنمایی کنید.

a.seieddokht
شنبه 29 آذر 1393, 00:30 صبح
سلام دوستان
وقت بخیر
من در صفحه index.jsp خودم یک لینک به نام logout دارم و میخوام وقتی کاربر روش کلیک کرده session کاربر بسته بشه و به صفحه login برگرده.
برای انجام اینکار حتما باید servlet استفاده کنم؟
نمیشه کار کنم تو همون صفحه پردازش بشه؟
ممنون میشم راهنمایی کنید.
با سلام
دوست عزیز jsp و servlet فرقی با هم ندارن بستگی به کارتون داره چندتا روش داره واسه کشتن سشن یوزر شما اکشن اون لینک رو بزارید روی یک صفحه یا سرولت اول بعدش از یکی از دو روش زیر استفاده کنید
روش اول

Enumeration<String> enum = request.getSession().getAttributesName();
while(enum.hasNext) {
request.getSession.removeAttribute(enum.next);
}


روش دوم

request.getSession().invalidate


موفق باشید

manoto1371
شنبه 29 آذر 1393, 09:33 صبح
مرسی
اما من نمیخوام به صفحه دیگه بره!
یعنی حتما مثلا باید به یک سرولت یا .. ریدایرکت کنم و بعد اونجا سیشن از بین ببرم و بعد ریدارکت کنم به صفحه اصلی؟
راهی نیست تو همون صفحه سیشن بکشم و ریدایرکت کنم؟

ahmad.mo74
شنبه 29 آذر 1393, 10:28 صبح
سلام، همیشه Servlet رو به عنوان یک Controller و JSP رو به عنوان View در نظر بگیر. اینکه میگی همه چیو ببرم تو صفحه jsp بله میشه اما کار قشنگی نیست، سعی کن تا جایی که میشه توی صفحات jsp کد نزنی و به عنوان لایه view در نظر بگیریش... اصلا برای جلوگیری از همین چیزا بود که taglib و jstl و... درست شد.

فرض کنیم یه صفحه home.jsp داری بعد از توی اون کاربر logout میکنه و به صفحه login.jsp برمیگرده :

Login :


package com.sample.controller;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


/**
* @author avb
*/
public class Login extends HttpServlet {


@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//do login
resp.sendRedirect("home.jsp");
}


}


Logout :


package com.sample.controller;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.Optional;


/**
* @author avb
*/
public class Logout extends HttpServlet {


@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//do logout
Optional.of(req.getSession(false)).ifPresent(HttpS ession::invalidate);
resp.sendRedirect("login.jsp");
}


}


login.jsp :


<%--
@author avb
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
<form action="login.do">
<label>
<input type="text" name="username">
</label>
<br/>
<br/>
<label>
<input type="password" name="password" autocomplete="off">
</label>
<br/>
<br/>
<input type="submit" value="Login">
</form>
</body>
</html>


home.jsp :


<%--
@author avb
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
<form action="logout.do">
<input type="submit" value="logout">
</form>
</body>
</html>


web.xml :


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">


<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>


<servlet>
<servlet-name>login</servlet-name>
<servlet-class>com.sample.controller.Login</servlet-class>
</servlet>
<servlet>
<servlet-name>logout</servlet-name>
<servlet-class>com.sample.controller.Logout</servlet-class>
</servlet>


<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>logout</servlet-name>
<url-pattern>/logout.do</url-pattern>
</servlet-mapping>


</web-app>

a.seieddokht
شنبه 29 آذر 1393, 11:27 صبح
مرسی
اما من نمیخوام به صفحه دیگه بره!
یعنی حتما مثلا باید به یک سرولت یا .. ریدایرکت کنم و بعد اونجا سیشن از بین ببرم و بعد ریدارکت کنم به صفحه اصلی؟
راهی نیست تو همون صفحه سیشن بکشم و ریدایرکت کنم؟


دوست عزیز این که می خوای تو همون صفحه بمونی ربطی به جاوا ندارد با ای جکس این کارو انجام بده
موفق باشید