【SSM学习笔记】SpringMVC中客户端跳转与Session传递数据
2018-01-26 10:14
399 查看
在开发Web项目的时候,访问jsp页面我们总是在浏览器上直接输入例如/index.jsp这样的地址来访问,无论是直接访问jsp还是通过视图定位(无.jsp后缀)来访问,都属于服务端访问,那么如果通过客户端访问应该怎么做呢?换句话说,例如输入/hello访问时会自动跳转到index.jsp页面。
一、关于客户端跳转
首先配置springmvc-servlet.xml文件
接着配置web.xml文件
将项目部署在tomcat服务器上,访问http://localhost:8080/springmvc/index,结果如下
接着访问http://localhost:8080/springmvc/jump,可以看到同样的结果,说明在访问jump的时候,发生了客户端跳转,跳转至页面index.jsp,并且浏览器地址栏中的内容变成了http://localhost:8080/springmvc/index
二、关于session中的数据传递与处理
在计算机中,尤其是在网络应用中,Session被称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的
Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中。有关使用 Session 对象的详细信息,请参阅“ASP 应用程序”部分的“管理会话”。注意 会话状态仅在支持 cookie 的浏览器中保留。
继续在IndexController类中添加如下代码
@RequestMapping("/check")
//"/check"的访问映射方法需要接受一个HttpSession类的参数
public ModelAndView check(HttpSession session) {
//i的值等于session中count变量的值
Integer i = (Integer)session.getAttribute("count");
if(i==null)
i=0;
i++;
//将自增后的i重新赋值给count
session.setAttribute("count", i);
ModelAndView mav = new ModelAndView("check");
return mav;
}
@RequestMapping("/clear")
public ModelAnd
4000
View clear(HttpSession session) {
if((Integer)session.getAttribute("count")!=0)
//若session中的count值不为0,则清空count
session.setAttribute("count", 0);
//客户端跳转重新定位至/check页面
ModelAndView mav = new ModelAndView("redirect:/check");
return mav;
}
用来操作session中的数据,即显示访问该地址的次数,每访问一次count自增。
创建check.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
session被访问的次数为:${count}
访问http://localhost:8080/springmvc/check,并且不断刷新,可以看到屏幕上显示访问次数再逐次增加
访问http://localhost:8080/springmvc/clear后,访问次数清空,并且跳转回/check,访问次数变为1
一、关于客户端跳转
首先配置springmvc-servlet.xml文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="controller" /> <bean id="irViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/page/" /> <property name="suffix" value=".jsp" /> </bean> </beans>其中定义的
<bean id="irViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/page/" /> <property name="suffix" value=".jsp" /> </bean>是用来定义视图定位的方法的,即定义视图定位的前缀和后缀,要访问的是/WEB-INF/page目录下的jsp文件。
接着配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>我们来定义一个IndexController
package controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller public class IndexController { //注释说明此方法为处理请求地址映射 @RequestMapping("/index") //定义一个handelRequest方法映射/index访问 public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { //用index访问地址实例化一个ModelAndView对象 ModelAndView mav = new ModelAndView("index"); //注入信息 mav.addObject("message", "Hello Spring MVC"); return mav; } @RequestMapping("/jump") public ModelAndView jump() { //redirect:/index表示客户端跳转 ModelAndView mav = new ModelAndView("redirect:/index"); return mav; } }index.jsp内容如下,在浏览器上输出注入mav中的信息,将它放在/WEB-INF/page文件夹下
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false"%> <h1>${message}</h1>
将项目部署在tomcat服务器上,访问http://localhost:8080/springmvc/index,结果如下
接着访问http://localhost:8080/springmvc/jump,可以看到同样的结果,说明在访问jump的时候,发生了客户端跳转,跳转至页面index.jsp,并且浏览器地址栏中的内容变成了http://localhost:8080/springmvc/index
二、关于session中的数据传递与处理
在计算机中,尤其是在网络应用中,Session被称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的
Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中。有关使用 Session 对象的详细信息,请参阅“ASP 应用程序”部分的“管理会话”。注意 会话状态仅在支持 cookie 的浏览器中保留。
继续在IndexController类中添加如下代码
@RequestMapping("/check")
//"/check"的访问映射方法需要接受一个HttpSession类的参数
public ModelAndView check(HttpSession session) {
//i的值等于session中count变量的值
Integer i = (Integer)session.getAttribute("count");
if(i==null)
i=0;
i++;
//将自增后的i重新赋值给count
session.setAttribute("count", i);
ModelAndView mav = new ModelAndView("check");
return mav;
}
@RequestMapping("/clear")
public ModelAnd
4000
View clear(HttpSession session) {
if((Integer)session.getAttribute("count")!=0)
//若session中的count值不为0,则清空count
session.setAttribute("count", 0);
//客户端跳转重新定位至/check页面
ModelAndView mav = new ModelAndView("redirect:/check");
return mav;
}
用来操作session中的数据,即显示访问该地址的次数,每访问一次count自增。
创建check.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
session被访问的次数为:${count}
访问http://localhost:8080/springmvc/check,并且不断刷新,可以看到屏幕上显示访问次数再逐次增加
访问http://localhost:8080/springmvc/clear后,访问次数清空,并且跳转回/check,访问次数变为1
相关文章推荐
- React Native学习笔记之--组件之间数据的传递和跳转
- springMVC学习笔记-后端给前端·传递数据
- [Android新手学习笔记05]-如何进行活动Activity之间的跳转以及数据传递
- springMVC学习笔记---修改配置文件路径和传递数据
- springmvc学习笔记(七)数据传递及乱码问题
- springmvc学习笔记(八)json传递数据
- springMVC学习笔记四(数据类型转换和数据验证)
- Android基础学习笔记-Activity开启与数据传递
- WCF学习笔记:传递DataTable 报错是因为WCF不支持DataTable数据类型,DataContractSerializer 支持的类型
- IOS开发笔记之应用间的跳转和数据传递
- jQuery学习笔记之 Ajax操作篇(二) - 数据传递
- SpringMVC学习笔记(7) 返回Json格式数据
- JSP实现数据传递(web基础学习笔记三)
- HTML5学习笔记之客户端存储数据方法:localStorage(),sessionStorage()
- SpringMVC学习笔记(6) 参数的传递+乱码解决
- Widget隐士跳转,并传递数据给客户端!
- CXF学习笔记---让通过参数传递数据
- IOS开发基础教程学习笔记4 在storyboard的场景之间传递数据
- Dynamic CRM 2013学习笔记(十)客户端几种查询数据方式比较
- [Silverlight学习笔记]关于利用WCF RIA Service进行通信并在客户端获取数据