您的位置:首页 > 编程语言 > Java开发

【SSM学习笔记】SpringMVC中客户端跳转与Session传递数据

2018-01-26 10:14 399 查看
在开发Web项目的时候,访问jsp页面我们总是在浏览器上直接输入例如/index.jsp这样的地址来访问,无论是直接访问jsp还是通过视图定位(无.jsp后缀)来访问,都属于服务端访问,那么如果通过客户端访问应该怎么做呢?换句话说,例如输入/hello访问时会自动跳转到index.jsp页面。

一、关于客户端跳转

首先配置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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javaweb ssm session