SpringMVC首页访问方式
Spring MVC首页访问的设置:
- tomcat中配置首页
- spring mvc配置首页
- DispatcherServlet配置的servlet映射
tomcat方式
- 配置tomcat的web.xml
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
- 添加项目到tomcat
- 启动tomcat
- 访问项目
# http://${tomcat-ip}:${tomcat-port}/${project-name}
http://localhost/dintern
服务器在项目WebApp根目录(例如:maven项目的webapp)寻找index.html/index.htm/index.jsp,如果找到,就跳转到这些页面,如果没有找到,就去项目中找首页设置
spring mvc项目配置首页
- 配置springmvc的web.xml,同tomcat
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
服务器找不到tomcat中配置的首页,会寻找项目中配置的首页
DispatcherServlet配置的servlet映射
- web.xml配置DispatcherServlet
<servlet>
<servlet-name>springServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
- Controller设置首页视图
@RequestMapping(value="/", method=RequestMethod.GET)
public String index(){
return "index";
}
服务器会结合视图配置寻找首页,视图配置如下:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
服务器找到的首页是:/WEB-INF/views/index.jsp
Notice
spring mvc项目的DispatcherServlet的地址映射/和/*的区别
- /表示拦截所有的路径型url,不会匹配到模式为.jsp这样后缀型的url
- /* 表示拦截所有的路径型和后缀型的url(包括/login, *.jsp, .js,.html等)
- Reference:(https://stackoverflow.com/questions/4140448/difference-between-and-in-servlet-mapping-url-pattern)
spring mvc首页如何由controller处理
本文以spring mvc项目配置了<url-pattern>/</url-pattern>为例,说明如何让首页交给controller处理呢,下面提供两种方案。
定义欢迎页
- 在tomcat或者项目的web.xml添加首页配置
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
- 在index.jsp中添加以下代码,就会跳到指定的controller去处理
<%
response.sendRedirect(request.getContextPath()+"/login");
%>
项目中配置的路径是/
前提条件是:tomcat和项目中没有配置首页,或者配置的首页不存在
- web.xml
<servlet>
<servlet-name>springServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
- controller
@RequestMapping(value="/", method=RequestMethod.GET)
public String index(){
return "login";
}