一.Ssm所有相关jar包,包括mybatis,spring,mybatis-spring,数据库的。
二.相关文件配置
①mybatis的核心配置文件mybatis.xml(用到通用Mapper的话在这里配置)
·xml内容:配置pojo别名
<configuration>
<typeAliases>
<package name=”cn.itcast.ssm.pojo”>
</typeAliases>
</configuration>
*说明:设置pojo包名后,pojo的别名就是类名了。
·同步操作:创建pojo包
②spring配置文件applicationContext-dao.xml
·xml内容:1.扫描db.properties文件;2.连接池配置;3.mybatis工厂创建;4.扫描Mapper包。
<!-- 扫描db.properties文件 -->
<context:property-placeholder location=”classpath:db.properties”>
<!-- 数据库连接池配置 -->
<bean id=”dataSource” class=”com.jolbox.bonecp.BoneCPDataSource”>
<property name=”driverClassName” value=”${jdbc.driverClassName}”/>
<property name=”url” value=”${jdbc.url}”/>
<property name=”username” value=”${jdbc.username}”/>
<property name=”password” value=”${jdbc.password}”/>
</bean>
<!-- SqlSessionFactory的实例化 -->
<bean class=”org.mybatis.spring.SqlSessionFactoryBean”>
<!-- 注入连接池 -->
<property name=”dataSource” ref=”dataSource”/>
<!-- 加载mybatis的核心配置文件 -->
<property name=”configLocation” value=”classpath=mybatis.xml”/>
</bean>
<!-- 扫描Mapper -->
<bean class=”org.mybatis.spring.mapper.MapperScannerConfigurer”>
<property name=”basePackage” value=”classpath=cn.itcast.ssm.mapper”/>
</bean>
·同步操作:创建db.properties文件;创建cn.itcast.ssm.mapper包
③spring的配置文件applicationContext-service.xml
·xml内容:扫描service包
<!-- 扫描serivce包-->
<context:component-scan base-package=”cn.itcast.ssm.service”/>
·同步操作:创建cn.itcast.ssm.service包
④springmvc的配置文件springmvc.xml
·xml内容:1.配置controller扫描 2.配置三大组件(映射器、适配器使用注解驱动。视图解析器bean,设置jsp前后缀)
<!-- 扫描controller -->
<context:component-scan base-package=”cn.itcast.ssm.controller”/>
<!-- 三大组件 -->
<!-- 处理器映射器和适配器 -->
<mvc:annotation-driven/>
<!-- 视图解析器 -->
<bean class=”org.springframework.web.servlet.view.InternalResourceViewResolver”>
<property name=”prefix” value=”WEB-INF/jsp”/>
<property name=”suffix” value=”.jsp”/>
</bean>
·同步操作:创建cn.itcast.ssm.controller包
⑤配置web.xml
·xml内容:1.配置spring; 2.配置监听器读取spring配置; 3.配置springmvc前端控制器
·其他操作:插入log4j.properties文件
<!-- 配置spring -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:application-*.xml</param-value>
</context-param>
<!-- 配置监听器读取spring配置 -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- 配置springmvc前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatchServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!-- 启动web容器就启动springmvc -->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- url拦截设置,以.action结尾的url 进入springmvc-->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
三.需要留意:
·mybatis工厂需要---配置连接池和加载mybatis.xml
·扫描mapper的包是通过创建bean来实现的,而扫描servlet和controller是通过标签<context:component-scan base-package=””/>来实现的。
·监听器为ContextLoaderListener
·前端控制器servlet实现需要设置<init-param>加载配置文件springmvc.xml,name值为contextConfigLocation
一.关于@ResponseBody标签
*返回视图(ModelAndView)的写法,通过视图解析器解析后视图jsp调用方法中的参数
[java]
1. @RequestMapping("view1")
2. public ModelAndView view1(ModelAndView mav) {
3. mav.setViewName("view1");
4. return mav;
5. }
6.
7. @RequestMapping("view2")
8. public String view2() {
9. return "view2";
10. }
*若要直接往response中写内容而不经过视图解析器时可以使用@ResponseBody
不需要创建ModelAndView,直接return需要的内容,jsp(视图)页面就可以调用这个内容了
[java]
1. @RequestMapping("json1")
2. @ResponseBody
3. public Object view() {
4. Map<String, String> map = new HashMap<String, String>();
5. map.put("a", "a");
6. return map;
7. }
要想responseBody返回Json,必须要加入json解析的jar包
[XML]
1. <dependency>
2. <groupId>com.fasterxml.jackson.core</groupId>
3. <artifactId>jackson-databind</artifactId>
4. <version>2.8.7</version>
5. </dependency>
加入以上jar包后可以返回json了
responseBody返回的内容不止json一种,还有text,xml和其他,如何控制返回的类型由程序自动选
二.关于ResponseEntity
实例
1)前台代码:
[html]
1. <script type="text/javascript" src="JQuery/jquery-3.2.1.js"></script>
[javascript]
1. function responseEntity(){
2. $.post("${pageContext.request.contextPath}/Test/responseEntity.do",{},function(data){
3. alert(data.message);
4. });
5. }
[html]
1. <input id="responseEntityTest" type="button" value="request" onclick="responseEntity()">
2)后台代码:
[java]
1. @RequestMapping("/responseEntity.do")
2. public ResponseEntity<Map<String,Object>> responseEntity(){
3. Map<String,Object> map = new HashMap<String,Object>();
4. map.put("message", "Hello Wrold");
5. return new ResponseEntity<Map<String,Object>>(map, HttpStatus.OK);
6. }
返回实体中,第一个参数为返回的数据,相当于out.write(map.toString()),第二个参数是状态码,可以设置返回404,上述设置等价于返回200。这样直接给jsp页面返回数据,不需要创建ModelAndView之类的操作了。