以前总是访问不了WEB-INF下面的jsp文件,最近终于解决了一个问题,正好今天又用到,所以就记录一下,也能帮助其他人。
之前只能通过将jsp文件放到webapp或者WebContent下才能访问,今天就把所有的jsp文件都放到了WEB-INF/page目录下。如下:
然后在web.xml文件中配置要访问的初始界面,如果初始页面也在WEB-INF下,一定要配置,比如/WEB-INF/page/index.jsp。如下:
<welcome-file-list>
<welcome-file>/WEB-INF/page/register.jsp</welcome-file>
</welcome-file-list>
通过form表单提交,发送请求,可以通过springmvct视图解析器配置要解析的视图的前缀和后缀,如下:
<!-- springmvc的视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/page/"/>
<property name="suffix" value=".jsp"/>
</bean>
然后controller处理成功后即可跳转到其他WEB-INF下面的jsp文件了,如下,处理成功后将跳到account.jsp页面。
@RequestMapping(value="/register")
public ModelAndView register(HttpServletRequest request,HttpServletResponse response){
ModelAndView mv = new ModelAndView();
Member member;
Member newMember = new Member();
try {
member = memberService.findByMembername(request.getParameter("memberName"));
} catch (Exception e) {
member = null;
}
if(member != null){
mv.addObject("msg","用户名已存在!");
mv.setViewName("register");
}else{
newMember.setMemberName(request.getParameter("memberName"));
newMember.setPassword(request.getParameter("password"));
newMember.setSex(request.getParameter("sex"));
newMember.setEmail(request.getParameter("phone"));
newMember.setCity(request.getParameter("email"));
newMember.setAddress(request.getParameter("address"));
memberService.save(newMember);
mv.addObject("msg","注册成功!");
//注册成功后,跳转到/WEB-INF/page/account.jsp中
mv.setViewName("account");
}
return mv;
}
因为在springmvc中已经配置了视图解析器,包括前缀和后缀,所以后面的页面跳转设置,只需要指明要跳转的页面的名字即可。