当前位置: 首页 > 工具软件 > Web-Return > 使用案例 >

SpringMvc+MyBatis+Maven把jsp放在web-inf目录下以避免直接访问jsp

姬歌者
2023-12-01

(本篇不讲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框架都是同样的写法----字符串




 类似资料: