(本篇不讲mybatis和maven)
最近写项目被一件事困扰,就是session超时控制。
用户在一定时间内没有操作则自动断开连接,当用户再次发送请求时需要将请求拦截然后重定向到登录界面。然而现在暂时还没有处理好这个问题。。
Session超时拦截跳转问题处理。
response.sendRedirect("/");
在跳转控制的controller中,"/"跳转到登录页
项目使用springmvc框架。
view层的jsp执行时需要一些参数或者各种数据才可以正常显示出来内容,如果直接从浏览器地址栏访问就会出现错误的数据或者显示不正常。因此。需要把所有的jsp文件都放在web-inf目录下隐藏起来,然后通过controller来控制jsp的跳转和打开。
具体是:
1.在springmvc.xml中配置试图解析器和静态资源映射
<!-- 视图解析器 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- 配置资源映射 -->
<mvc:resources location="/WEB-INF/css/" mapping="/css/**" />
<mvc:resources location="/WEB-INF/js/" mapping="/js/**" />
说明:
试图解析器中
value="/WEB-INF/jsp/"
上面这行指定了WEB-INF/jsp这个目录,这是试图解析器要扫描的视图所在的路径。
value=".jsp"
上面这行指定了试图解析器要扫描的视图文件的后缀
资源映射文件不配置就无法使用(因为Web-inf下的文件都不可以直接访问)
经过上面的配置,就不可以再通过地址栏输入ip:端口号/xxx.jsp来访问页面了。想访问jsp页面还需要添加controller。
只需要一个controller来控制所有jsp页面的跳转。
controller代码比较简单。
@RequestMapping("/")
@Controller
public class DispatcherController {
@RequestMapping("/")
public String loginPage() {
return "login";
}
@RequestMapping("/index")
public String index() {
return "index";
}
}
类上也最好加上RequestMapping,否则很有可能其他的所有请求(包括controller请求和资源的请求)都不能正常使用了。
RequestMapping("/")就代表直接在地址栏输入ip:端口号时要访问的地址。
jsp中跳转页面,无论是在script标签里还是直接在html的标签里,都是直接把上面controller代码返回的字符串给对应的调用者就好。
比如:script中
location.href = "index";
也可以直接拼接到html代码里
例如:
οnclick="return NavMenu('index','主页');"
使用不同的js框架都是同样的写法----字符串