Spring -- 2
在上一个Demo的基础上添加SpringMVC
- 添加必要的jar包。
- 对web.xml配置,使应用起动的时候能够自动启动Spring容器(前面使用JUnit4测试,所以没有配置)。代码:
<!-- 从类路径下加载Spring配置文件,classpath关键字特指类路径下加载 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 负责启动Spring容器的监听器,它将从上下文参数获取Spring文件配置的地址 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
通过Web容器上下文参数指定Spring配置文件的地址,多个配置文件可以用逗号或者空格分隔,建议用逗号分隔。
指定Spring提供的ContextLoaderListener监听器,在Web应用启动的时候运行,根据contextConfigLocation提供的Web容器参数获取Spring配置文件,启动Spring。
- 配置SpringMVC的相关信息,代码:
1 1 <!-- SpringMVC的主控Servlet --> 2 2 <servlet> 3 3 <servlet-name>springMvc</servlet-name> 4 4 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 5 5 <load-on-startup>1</load-on-startup> 6 6 </servlet> 7 7 8 8 <!-- springMVC处理的URL --> 9 9 <servlet-mapping> 10 10 <servlet-name>springMvc</servlet-name> 11 11 <url-pattern>*.do</url-pattern> 12 12 </servlet-mapping>
这里配置一个Servlet作为SpringMVC的总的控制器,它像struts一样也是通过一个Servlet捕获URL,然后再进行相关的处理。
SpringMVC也有一个配置文件,主要是对试图解析器进行配置。这个配置文件和SpringMVC配置的Servlet名字有一个默认的契约,即采用<servlet-name>-servlet.xml,在web-inf目录下。
还可以直接在配置文件里指定(忘了,后补)。
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans 6 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 7 http://www.springframework.org/schema/context 8 http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 9 10 <!-- 扫描web包,应用Spring的注解 --> 11 <context:component-scan base-package="web"/> 12 13 <!-- 配置视图解析器,将ModelAndView及字符串解析为具体的页面 --> 14 <bean 15 class="org.springframework.web.servlet.view.InternalResourceViewResolver" 16 p:viewClass="org.springframework.web.servlet.view.JstlView" 17 p:prefix="/WEB-INF/jsp/" 18 p:suffix=".jsp" /> 19 </beans>
对于配置的具体介绍,截个图吧。
以后把视图解析换成tiles模板,现在做项目用的是tiles模板。
- 然后就是跑程序了。
写了一个index.jsp页面,一个userInfo.jsp页面。
启动应用默认的是index.html,因为无法访问web-inf下的文件,所以在index.html直接写了一句JS代码导向我的Controller
window.location = 'main.do?gotoIndex';
- 在写程序的时候有报错,基本上都是由于jar包的问题。比如要引用JSTL需要导入jstl-api-1.2.jar和taglibs-standard-impl-1.2.1.jar
这写东西,如果不配置真的不知道,对不同的jar包有了更清楚的认识了。
还有就是我自动注入的时候,如果只是配置扫描实现类还是不行的,需要把接口也要配置到扫描目录下,否则会报错。
上传工程,把jar包去掉,不然太大了。