WebRoot和WebContent在Java Web项目中,仅仅是一个名称而已,在实际部署到Tomcat后,并不存在WebRoot和WebContent。
在Java Web项目中,如果将jsp页面放置到WEB-INF下,则在调用这些页面的时候需要在URL中添加“WEB-INF”。
Redirect重定向和Forward请求分派是实现页面跳转的两种方式,Forward请求分派是在原页面打开要跳转的网页,而Redirect重定向则是在新的页面打开要跳转的网页。
WEB-INF目录是不对外开放的,外部不能通过URL直接访问,外部只能通过映射为servlet、action、controller来通过服务器端跳转来访问WEB-INF目录下具体的jsp页面,这样可以提高安全性。放置在WEB-INF下的jsp页面只能使用Forward请求分派来进行访问。
将jsp页面放置到WEB-INF下,对于页面资源文件如css、js、image仍然放置在WebRoot和WebContent中,若将这些资源文件放置到WEB-INF下,则会导致资源文件无法被引用。
放置在WEB-INF下的jsp若需要引用css、js、image资源文件,其引用路径可以忽略WEB-INF
在spring-mvc.xml中配置视图解析器
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"/>
</bean>
下面是跳转到项目首页对应的Controller中的内容
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/")
@Scope("prototype")
public class IndexController {
@RequestMapping(value ="index")
private String addCommonSense(HttpServletRequest request,HttpServletResponse response) {
return "/pages/FirstPage";
}
}
web.xml中的welcome-file-list配置
<welcome-file-list>
<welcome-file>/index.do</welcome-file>
</welcome-file-list>
输入http://localhost:8080/TestWeb/,即可跳转到项目首页。本例中外部请求通过映射为controller来通过服务器端跳转访问WEB-INF目录下具体的jsp页面,这样可以提高安全性。