Jika Anda ingin menghapus objek setelah setiap respons Anda tidak memerlukan sesi,
Jika Anda ingin menyimpan objek selama sesi pengguna, Ada beberapa cara:
langsung menambahkan satu atribut ke sesi:
@RequestMapping(method = RequestMethod.GET)
public String testMestod(HttpServletRequest request){
ShoppingCart cart = (ShoppingCart)request.getSession().setAttribute("cart",value);
return "testJsp";
}
dan Anda bisa mendapatkannya dari pengontrol seperti ini:
ShoppingCart cart = (ShoppingCart)session.getAttribute("cart");
Jadikan sesi pengontrol Anda tercakup
@Controller
@Scope("session")
Cakupan Objek, misalnya Anda memiliki objek pengguna yang harus berada dalam sesi setiap saat:
@Component
@Scope("session")
public class User
{
String user;
/* setter getter*/
}
lalu masukkan kelas di setiap pengontrol yang Anda inginkan
@Autowired
private User user
yang membuat kelas tetap dalam sesi.
Injeksi proxy AOP: di musim semi -xml:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">
<bean id="user" class="com.User" scope="session">
<aop:scoped-proxy/>
</bean>
</beans>
lalu masukkan kelas di setiap pengontrol yang Anda inginkan
@Autowired
private User user
5. Lewati HttpSession ke metode:
String index(HttpSession session) {
session.setAttribute("mySessionAttribute", "someValue");
return "index";
}
6. Buat ModelAttribute di sesi Dengan @SessionAttributes ("ShoppingCart"):
public String index (@ModelAttribute("ShoppingCart") ShoppingCart shoppingCart, SessionStatus sessionStatus) {
//Spring V4
//you can modify session status by sessionStatus.setComplete();
}
atau Anda dapat menambahkan Model Ke seluruh Kelas Pengontrol seperti,
@Controller
@SessionAttributes("ShoppingCart")
@RequestMapping("/req")
public class MYController {
@ModelAttribute("ShoppingCart")
public Visitor getShopCart (....) {
return new ShoppingCart(....); //get From DB Or Session
}
}
masing-masing memiliki kelebihan dan kekurangan:
@session dapat menggunakan lebih banyak memori dalam sistem cloud itu menyalin sesi ke semua node, dan metode langsung (1 dan 5) memiliki pendekatan yang berantakan, tidak baik untuk pengujian unit.
Untuk mengakses sesi jsp
<%=session.getAttribute("ShoppingCart.prop")%>
di Jstl:
<c:out value="${sessionScope.ShoppingCart.prop}"/>
di Thymeleaf:
<p th:text="${session.ShoppingCart.prop}" th:unless="${session == null}"> . </p>