<link rel="stylesheet" href="/css/blog-common.min.css?v=sqi5FxOybx6gjGoG6Zfy1wD-0AwznLNLYOVx7Y9tIN0" />
<link id="MainCss" rel="stylesheet" href="/skins/insidedotnet/bundle-insidedotnet.min.css?v=wKLZ_KuOVh7qEcOZ5rZydpQ2kXSWKc6pkxTpD61iXJk" />
<link id="mobile-style" media="only screen and (max-width: 767px)" type="text/css" rel="stylesheet" href="/skins/insidedotnet/bundle-insidedotnet-mobile.min.css?v=netr1CuSsXZ0CExbtEiL-uTF8pqcWT8cR0el_b5SyJM" />
<link type="application/rss+xml" rel="alternate" href="https://www.cnblogs.com/siv8/rss" />
<link type="application/rsd+xml" rel="EditURI" href="https://www.cnblogs.com/siv8/rsd.xml" />
<link type="application/wlwmanifest+xml" rel="wlwmanifest" href="https://www.cnblogs.com/siv8/wlwmanifest.xml" />
<script src="https://common.cnblogs.com/scripts/jquery-2.2.0.min.js"></script>
<script src="/js/blog-common.min.js?v=W8J2DYaUeAZPX2Lx1iRh00kAY9PXrT8UdrrPQB3gEXU"></script>
<script>
var currentBlogId = 289875;
var currentBlogApp = 'siv8';
var cb_enable_mathjax = false;
var isLogined = false;
</script>
siv8
</div><!--end: blogTitle 博客的标题和副标题 -->
<div id="navigator">
新随笔
- 联系
- 管理
<div class="clear"></div> <div class="blogStats"> <!--done-->
随笔-
35
文章-
0
评论-
1</div><!--end: blogStats --> </div><!--end: navigator 博客导航栏 -->
</h1> <div class="clear"></div> <div class="postBody">
SSM:spring+springMVC+Mybatis
学习网友的http://www.cnblogs.com/invban/p/5133257.html,并对其进行了详细的解说。
源码下载:http://pan.baidu.com/s/1jGScJ34
第一步,建立一个动态的web项目。
第二步,建立各个包,并导入各种jar包,我是从网上下载的。如下图:
第三步,建立model类吧。我这边建立一个很简单的类,先不进行配置,配置有点头晕。
建立user类,自建get和set方法,并构造方法:
package com.model;
public class User {
private int id;
private String username;
private String age;public User() { super(); } public User(int id, String username, String age) { super(); this.id = id; this.username = username; this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getAge() { return age; } public void setAge(String age) { this.age = age; }
}
View Code第四步,容我先配置一下mybatis的xml文件。
建一个userMapper.xml(相当于实现类)和UserMapper.java接口文件。
先做一个select * from d_user;
因为数据库是这个样子滴,如下图:
配置代码如下:
package com.mapper;
import java.util.List;
import com.model.User;
public interface UserMapper {
View Code
List<User> findAllUser();
}userMapper.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.mapper.UserMapper"> <!-- 解决表名与字段不匹配 --> <resultMap type="User" id="userResultMap"> <id property="id" column="user_id"/> <result property="username" column="user_name"/> <result property="age" column="user_age"/> </resultMap>
<span style="color: #0000ff;"><</span><span style="color: #800000;">select </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="findAllUser"</span><span style="color: #ff0000;"> resultMap</span><span style="color: #0000ff;">="userResultMap"</span><span style="color: #ff0000;"> resultType</span><span style="color: #0000ff;">="User"</span><span style="color: #0000ff;">></span><span style="color: #000000;"> select * from d_user </span><span style="color: #0000ff;"></</span><span style="color: #800000;">select</span><span style="color: #0000ff;">></span>
</mapper>
View Code第五步,配置service。
首先,要看到我们之前建的两个包,一个是com.service和com.service.impl。
在com.service中,要建立一个UserService类。代码如下:
package com.service;
import java.util.List;
import com.model.User;
public interface UserService {
View Code
List<User> findAllUser();
}UserServiceImpl.java代码如下:
package com.service.impl;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import com.mapper.UserMapper;
import com.model.User;
import com.service.UserService;@Service
@Transactional
public class UserServiceImpl implements UserService{@Resource </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> UserMapper userMapper; @Override </span><span style="color: #0000ff;">public</span> List<User><span style="color: #000000;"> findAllUser() { </span><span style="color: #008000;">//</span><span style="color: #008000;"> TODO Auto-generated method stub</span> List<User> findAllUser =<span style="color: #000000;"> userMapper.findAllUser(); </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> findAllUser; }
}
View Code第六步:写一个UserController类吧。
package com.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;import com.model.User;
import com.service.UserService;@Controller
@RequestMapping("/user")
public class UserController {</span><span style="color: #008000;">//</span><span style="color: #008000;">@Autowired不需要getter()和setter()方法,Spring也会自动注入</span>
@Autowired
private UserService userService;@RequestMapping(</span>"/findAllUser"<span style="color: #000000;">) </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> String findAllUser(HttpServletRequest request){ List</span><User> listUser =<span style="color: #000000;"> userService.findAllUser(); request.setAttribute(</span>"listUser"<span style="color: #000000;">, listUser); </span><span style="color: #0000ff;">return</span> "/allUser"<span style="color: #000000;">; }
}
View Code去看他们之间的类,去了解他们之间的关系。我觉得了解很重要。
第七步,开始配置xml文件吧,把文件放在config中。
mybatis-config.xml,配置如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <typeAliases> <typeAlias alias="User" type="com.model.User"/> </typeAliases> <mappers> <mapper resource="com/mapper/userMapper.xml" /> </mappers> </configuration>
其实,这些代码是在配置mybatis的时候提前敲好的,<mapper resource="com/mapper/userMapper.xml" />这行代码是在写完userMapper.xml去写上的。
然后就是去写spring配置了:spring-common.xml和spring-mvc.xml依次如下。其实代码都是我百度的,然后自己修改一下,谢谢分享。ing-
spring-common.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
<span style="color: #008000;"><!--</span><span style="color: #008000;"> 1. 数据源 : DriverManagerDataSource </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">bean </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="dataSource"</span><span style="color: #ff0000;"> class</span><span style="color: #0000ff;">="org.springframework.jdbc.datasource.DriverManagerDataSource"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="driverClassName"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="com.mysql.jdbc.Driver"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="url"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="jdbc:mysql://localhost:3306/mybatis"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="username"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="root"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="password"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="root"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">bean</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 2. mybatis的SqlSession的工厂: SqlSessionFactoryBean dataSource:引用数据源 MyBatis定义数据源,同意加载配置 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">bean </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="sqlSessionFactory"</span><span style="color: #ff0000;"> class</span><span style="color: #0000ff;">="org.mybatis.spring.SqlSessionFactoryBean"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="dataSource"</span><span style="color: #ff0000;"> ref</span><span style="color: #0000ff;">="dataSource"</span><span style="color: #0000ff;">></</span><span style="color: #800000;">property</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 制定Mybatis的配置 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="configLocation"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="classpath:config/mybatis-config.xml"</span> <span style="color: #0000ff;">/></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 指定实体类映射文件,可以指定同时指定某一包以及子包下面的所有配置文件,mapperLocations和configLocation有一个即可, 当需要为实体类指定别名时,可指定configLocation属性,再在mybatis总配置文件中采用mapper引入实体类映射文件 </span><span style="color: #008000;">--></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> <property name="mapperLocations" value="classpath*:com/mapper/*.xml"/> </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">bean</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 3. mybatis自动扫描加载Sql映射文件/接口 : MapperScannerConfigurer sqlSessionFactory basePackage:指定sql映射文件/接口所在的包(自动扫描) </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">bean </span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="org.mybatis.spring.mapper.MapperScannerConfigurer"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="basePackage"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="com.mapper"</span><span style="color: #0000ff;">></</span><span style="color: #800000;">property</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="sqlSessionFactory"</span><span style="color: #ff0000;"> ref</span><span style="color: #0000ff;">="sqlSessionFactory"</span><span style="color: #0000ff;">></</span><span style="color: #800000;">property</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">bean</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 4. 事务管理 : DataSourceTransactionManager dataSource:引用上面定义的数据源 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">bean </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="txManager"</span><span style="color: #ff0000;"> class</span><span style="color: #0000ff;">="org.springframework.jdbc.datasource.DataSourceTransactionManager"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="dataSource"</span><span style="color: #ff0000;"> ref</span><span style="color: #0000ff;">="dataSource"</span><span style="color: #0000ff;">></</span><span style="color: #800000;">property</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">bean</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 5. 使用声明式事务 transaction-manager:引用上面定义的事务管理器 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">tx:annotation-driven </span><span style="color: #ff0000;">transaction-manager</span><span style="color: #0000ff;">="txManager"</span> <span style="color: #0000ff;">/></span>
</beans>
spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<span style="color: #008000;"><!--</span><span style="color: #008000;"> 一般使用<context:component-scan/>来代替 <context:annotation-config/>,因为前者不仅配置扫描包路径选项还自动注入了下述processor的功能。 详解: <context:annotation-config/>向 Spring 容器注册AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、 PersistenceAnnotationBeanPostProcessor、 RequiredAnnotationBeanPostProcessor 这 4 个BeanPostProcessor。目的是为了你的系统能够识别相应的注解。 例如:@Autowired注解,对应 AutowiredAnnotationBeanPostProcessor的Bean。传统声明方式如下<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor "/> @Resource 、@PostConstruct、@PreDestroy对应CommonAnnotationBeanPostProcessor @PersistenceContext对应PersistenceAnnotationBeanPostProcessor的Bean。 @Required对应RequiredAnnotationBeanPostProcessor的Bean。 一般来说,这些注解我们还是比较常用,尤其是Antowired的注解,在自动注入的时候更是经常使用,所以如果总是需要按照传统的方式一条一条配置显得有些繁琐和没有必要, 于是spring给我们提供<context:annotation-config/>的简化配置方式,自动帮你完成声明。 不过,呵呵,我们使用注解一般都会配置扫描包路径选项 <context:component-scan base-package=”XX.XX”/>该配置项其实也包含了自动注入上述processor的功能,因此当使用 <context:component-scan/> 后,就可以将 <context:annotation-config/> 移除了。 </span><span style="color: #008000;">--></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 注解扫描包 </span><span style="color: #008000;">--></span> <span style="background-color: #ffff00;"><span style="color: #0000ff;"><</span><span style="color: #800000;">context:component-scan </span><span style="color: #ff0000;">base-package</span><span style="color: #0000ff;">="com"</span> <span style="color: #0000ff;">/></span></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 开启注解 </span><span style="color: #008000;">--></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的。 并提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)。 后面,我们处理响应ajax请求时,就使用到了对json的支持。 后面,对action写JUnit单元测试时,要从spring IOC容器中取DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,来完成测试, 取的时候要知道是<mvc:annotation-driven />这一句注册的这两个bean。 </span><span style="color: #008000;">--></span> <span style="background-color: #ffff00;"><span style="color: #0000ff;"><</span><span style="color: #800000;">mvc:annotation-driven </span><span style="color: #0000ff;">/></span></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 配置静态资源,直接映射到对应的文件夹,不被DispatcherServlet拦截而出现404找不到图片的问题,3.04新增功能,需要重新设置spring-mvc-3.0.xsd </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">mvc:resources </span><span style="color: #ff0000;">mapping</span><span style="color: #0000ff;">="/img/**"</span><span style="color: #ff0000;"> location</span><span style="color: #0000ff;">="/img/"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">mvc:resources </span><span style="color: #ff0000;">mapping</span><span style="color: #0000ff;">="/js/**"</span><span style="color: #ff0000;"> location</span><span style="color: #0000ff;">="/js/"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">mvc:resources </span><span style="color: #ff0000;">mapping</span><span style="color: #0000ff;">="/css/**"</span><span style="color: #ff0000;"> location</span><span style="color: #0000ff;">="/css/"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">mvc:resources </span><span style="color: #ff0000;">mapping</span><span style="color: #0000ff;">="/html/**"</span><span style="color: #ff0000;"> location</span><span style="color: #0000ff;">="/html/"</span> <span style="color: #0000ff;">/><br /></span> <span style="color: #008000;"><!-- 当上面要访问的静态资源不包括在上面的配置中时,则根据此配置来访问 --></span><br /><span style="color: #008000;"> <mvc:default-servlet-handler/></span></pre>
<!-- 定义跳转的文件的前后缀 ,视图模式配置--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> </beans>
第八步,web.xml文件
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<span style="color: #008000;"><!--</span><span style="color: #008000;"> 加载Spring容器配置 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">listener</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">listener-class</span><span style="color: #0000ff;">></span>org.springframework.web.context.ContextLoaderListener<span style="color: #0000ff;"></</span><span style="color: #800000;">listener-class</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">listener</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 设置Spring容器加载所有的配置文件的路径 ,默认加载的是web-inf下的applicationcontext.xml文件,此处是自定义</span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">context-param</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param-name</span><span style="color: #0000ff;">></span>contextConfigLocation<span style="color: #0000ff;"></</span><span style="color: #800000;">param-name</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param-value</span><span style="color: #0000ff;">></span>classpath*:config/spring-*.xml<span style="color: #0000ff;"></</span><span style="color: #800000;">param-value</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">context-param</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 配置SpringMVC核心控制器 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">servlet</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">servlet-name</span><span style="color: #0000ff;">></span>springMVC<span style="color: #0000ff;"></</span><span style="color: #800000;">servlet-name</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">servlet-class</span><span style="color: #0000ff;">></span>org.springframework.web.servlet.DispatcherServlet<span style="color: #0000ff;"></</span><span style="color: #800000;">servlet-class</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 默认加载的是wen-inf下的XXX-servlet.xml(springMVC-servlet.xml)文件,此处自定义 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">init-param</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param-name</span><span style="color: #0000ff;">></span>contextConfigLocation<span style="color: #0000ff;"></</span><span style="color: #800000;">param-name</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param-value</span><span style="color: #0000ff;">></span>classpath*:config/spring-mvc.xml<span style="color: #0000ff;"></</span><span style="color: #800000;">param-value</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">init-param</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 启动加载一次 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">load-on-startup</span><span style="color: #0000ff;">></span>1<span style="color: #0000ff;"></</span><span style="color: #800000;">load-on-startup</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">servlet</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;">为DispatcherServlet建立映射 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">servlet-mapping</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">servlet-name</span><span style="color: #0000ff;">></span>springMVC<span style="color: #0000ff;"></</span><span style="color: #800000;">servlet-name</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 此处可以可以配置成*.do </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">></span>/<span style="color: #0000ff;"></</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">servlet-mapping</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 防止Spring内存溢出监听器 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">listener</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">listener-class</span><span style="color: #0000ff;">></span>org.springframework.web.util.IntrospectorCleanupListener<span style="color: #0000ff;"></</span><span style="color: #800000;">listener-class</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">listener</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 解决工程编码过滤器 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">></span>encodingFilter<span style="color: #0000ff;"></</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">filter-class</span><span style="color: #0000ff;">></span>org.springframework.web.filter.CharacterEncodingFilter<span style="color: #0000ff;"></</span><span style="color: #800000;">filter-class</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">init-param</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param-name</span><span style="color: #0000ff;">></span>encoding<span style="color: #0000ff;"></</span><span style="color: #800000;">param-name</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param-value</span><span style="color: #0000ff;">></span>UTF-8<span style="color: #0000ff;"></</span><span style="color: #800000;">param-value</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">init-param</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">init-param</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param-name</span><span style="color: #0000ff;">></span>forceEncoding<span style="color: #0000ff;"></</span><span style="color: #800000;">param-name</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param-value</span><span style="color: #0000ff;">></span>true<span style="color: #0000ff;"></</span><span style="color: #800000;">param-value</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">init-param</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">filter-mapping</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">></span>encodingFilter<span style="color: #0000ff;"></</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">></span>/*<span style="color: #0000ff;"></</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">filter-mapping</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">welcome-file-list</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">welcome-file</span><span style="color: #0000ff;">></span>index.jsp<span style="color: #0000ff;"></</span><span style="color: #800000;">welcome-file</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">welcome-file-list</span><span style="color: #0000ff;">></span>
</web-app>
第九步,写一个jsp文件吧,因为才controller中,return的是allUser。就写一个allUser文件吧。
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>">
<span style="color: #0000ff;"><</span><span style="color: #800000;">title</span><span style="color: #0000ff;">></span>ssm<span style="color: #0000ff;"></</span><span style="color: #800000;">title</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">meta </span><span style="color: #ff0000;">http-equiv</span><span style="color: #0000ff;">="pragma"</span><span style="color: #ff0000;"> content</span><span style="color: #0000ff;">="no-cache"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">meta </span><span style="color: #ff0000;">http-equiv</span><span style="color: #0000ff;">="cache-control"</span><span style="color: #ff0000;"> content</span><span style="color: #0000ff;">="no-cache"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">meta </span><span style="color: #ff0000;">http-equiv</span><span style="color: #0000ff;">="expires"</span><span style="color: #ff0000;"> content</span><span style="color: #0000ff;">="0"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">meta </span><span style="color: #ff0000;">http-equiv</span><span style="color: #0000ff;">="keywords"</span><span style="color: #ff0000;"> content</span><span style="color: #0000ff;">="keyword1,keyword2,keyword3"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">meta </span><span style="color: #ff0000;">http-equiv</span><span style="color: #0000ff;">="description"</span><span style="color: #ff0000;"> content</span><span style="color: #0000ff;">="This is my page"</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> <link rel="stylesheet" type="text/css" href="styles.css"> </span><span style="color: #008000;">--></span>
</head>
<body>
<table border=“1”>
<tbody>
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>
<c:if test="KaTeX parse error: Expected 'EOF', got '#' at position 47: … style="color: #̲0000ff;">></…{listUser}" var=“list”>
<tr>
<td>KaTeX parse error: Expected 'EOF', got '#' at position 37: … style="color: #̲0000ff;"></<…{list.age }</td><span style="color: #0000ff;"></</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">c:forEach</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">c:if</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">tbody</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">table</span><span style="color: #0000ff;">></span>
</body>
View Code
</html>第十步,执行吧,开启tomcat服务器,输入:
http://localhost:8080/SSM/user/findAllUser
得到的如下图:
把数据库的数据都显示出来了。
</div><!--end: forFlow --> </div><!--end: mainContent 主体内容容器--> <div id="sideBar"> <div id="sideBarMain">
<div id="calendar"><div id="calendar"><div id="blog-calendar" style="display:none"></div></div> <script>loadBlogDefaultCalendar();</script></div> <DIV id="leftcontentcontainer"> <div id="blog-sidecolumn"></div> <script>loadBlogSideColumn();</script> </DIV> </div><!--end: sideBarMain --> </div><!--end: sideBar 侧边栏容器 --> <div class="clear"></div> <div class="clear"></div> </div><!--end: main --> <div class="clear"></div> <div id="footer"> <!--done-->
Copyright © 2019 siv8
Powered by .NET Core 3.0.0-preview9-19423-09 on Linux谨以此模板祝贺【博客园开发者征途】系列图书之《你必须知道的.NET》出版发行
简单SSM配置详解 - siv8 - 博客园 <link rel="stylesheet" href="/css/blog-common.min.css?v=sqi5FxOybx6gjGoG6Zfy1wD-0AwznLNLYOVx7Y9tIN0" /> <link id="MainCss" rel="stylesheet" href="/skins/insidedotnet/bundle-insidedotnet.min.css?v=wKLZ_KuOVh7qEcOZ5rZydpQ2kXSWKc6pkxTpD61iXJk" /> <link id="mobile-style" media="only screen and (max-width: 767px)" type="text/css" rel="stylesheet" href="/skins/insidedotnet/bundle-insidedotnet-mobile.min.css?v=netr1CuSsXZ0CExbtEiL-uTF8pqcWT8cR0el_b5SyJM" /> <link type="application/rss+xml" rel="alternate" href="https://www.cnblogs.com/siv8/rss" /> <link type="application/rsd+xml" rel="EditURI" href="https://www.cnblogs.com/siv8/rsd.xml" /> <link type="application/wlwmanifest+xml" rel="wlwmanifest" href="https://www.cnblogs.com/siv8/wlwmanifest.xml" /> <script src="https://common.cnblogs.com/scripts/jquery-2.2.0.min.js"></script> <script src="/js/blog-common.min.js?v=W8J2DYaUeAZPX2Lx1iRh00kAY9PXrT8UdrrPQB3gEXU"></script> <script> var currentBlogId = 289875; var currentBlogApp = 'siv8'; var cb_enable_mathjax = false; var isLogined = false; </script>
siv8
新随笔</div><!--end: blogTitle 博客的标题和副标题 --> <div id="navigator">
- 联系
- 管理
<div class="clear"></div> <div class="blogStats"> <!--done-->
随笔-
35
文章-
0
评论-
1</div><!--end: blogStats --> </div><!--end: navigator 博客导航栏 -->
</h1> <div class="clear"></div> <div class="postBody">
SSM:spring+springMVC+Mybatis
学习网友的http://www.cnblogs.com/invban/p/5133257.html,并对其进行了详细的解说。
源码下载:http://pan.baidu.com/s/1jGScJ34
第一步,建立一个动态的web项目。
第二步,建立各个包,并导入各种jar包,我是从网上下载的。如下图:
第三步,建立model类吧。我这边建立一个很简单的类,先不进行配置,配置有点头晕。
建立user类,自建get和set方法,并构造方法:
package com.model;
public class User {
private int id;
private String username;
private String age;public User() { super(); } public User(int id, String username, String age) { super(); this.id = id; this.username = username; this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getAge() { return age; } public void setAge(String age) { this.age = age; }
}
View Code第四步,容我先配置一下mybatis的xml文件。
建一个userMapper.xml(相当于实现类)和UserMapper.java接口文件。
先做一个select * from d_user;
因为数据库是这个样子滴,如下图:
配置代码如下:
package com.mapper;
import java.util.List;
import com.model.User;
public interface UserMapper {
View Code
List<User> findAllUser();
}userMapper.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.mapper.UserMapper"> <!-- 解决表名与字段不匹配 --> <resultMap type="User" id="userResultMap"> <id property="id" column="user_id"/> <result property="username" column="user_name"/> <result property="age" column="user_age"/> </resultMap>
<span style="color: #0000ff;"><</span><span style="color: #800000;">select </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="findAllUser"</span><span style="color: #ff0000;"> resultMap</span><span style="color: #0000ff;">="userResultMap"</span><span style="color: #ff0000;"> resultType</span><span style="color: #0000ff;">="User"</span><span style="color: #0000ff;">></span><span style="color: #000000;"> select * from d_user </span><span style="color: #0000ff;"></</span><span style="color: #800000;">select</span><span style="color: #0000ff;">></span>
</mapper>
View Code第五步,配置service。
首先,要看到我们之前建的两个包,一个是com.service和com.service.impl。
在com.service中,要建立一个UserService类。代码如下:
package com.service;
import java.util.List;
import com.model.User;
public interface UserService {
View Code
List<User> findAllUser();
}UserServiceImpl.java代码如下:
package com.service.impl;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import com.mapper.UserMapper;
import com.model.User;
import com.service.UserService;@Service
@Transactional
public class UserServiceImpl implements UserService{@Resource </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> UserMapper userMapper; @Override </span><span style="color: #0000ff;">public</span> List<User><span style="color: #000000;"> findAllUser() { </span><span style="color: #008000;">//</span><span style="color: #008000;"> TODO Auto-generated method stub</span> List<User> findAllUser =<span style="color: #000000;"> userMapper.findAllUser(); </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> findAllUser; }
}
View Code第六步:写一个UserController类吧。
package com.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;import com.model.User;
import com.service.UserService;@Controller
@RequestMapping("/user")
public class UserController {</span><span style="color: #008000;">//</span><span style="color: #008000;">@Autowired不需要getter()和setter()方法,Spring也会自动注入</span>
@Autowired
private UserService userService;@RequestMapping(</span>"/findAllUser"<span style="color: #000000;">) </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> String findAllUser(HttpServletRequest request){ List</span><User> listUser =<span style="color: #000000;"> userService.findAllUser(); request.setAttribute(</span>"listUser"<span style="color: #000000;">, listUser); </span><span style="color: #0000ff;">return</span> "/allUser"<span style="color: #000000;">; }
}
View Code去看他们之间的类,去了解他们之间的关系。我觉得了解很重要。
第七步,开始配置xml文件吧,把文件放在config中。
mybatis-config.xml,配置如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <typeAliases> <typeAlias alias="User" type="com.model.User"/> </typeAliases> <mappers> <mapper resource="com/mapper/userMapper.xml" /> </mappers> </configuration>
其实,这些代码是在配置mybatis的时候提前敲好的,<mapper resource="com/mapper/userMapper.xml" />这行代码是在写完userMapper.xml去写上的。
然后就是去写spring配置了:spring-common.xml和spring-mvc.xml依次如下。其实代码都是我百度的,然后自己修改一下,谢谢分享。ing-
spring-common.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
<span style="color: #008000;"><!--</span><span style="color: #008000;"> 1. 数据源 : DriverManagerDataSource </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">bean </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="dataSource"</span><span style="color: #ff0000;"> class</span><span style="color: #0000ff;">="org.springframework.jdbc.datasource.DriverManagerDataSource"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="driverClassName"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="com.mysql.jdbc.Driver"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="url"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="jdbc:mysql://localhost:3306/mybatis"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="username"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="root"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="password"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="root"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">bean</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 2. mybatis的SqlSession的工厂: SqlSessionFactoryBean dataSource:引用数据源 MyBatis定义数据源,同意加载配置 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">bean </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="sqlSessionFactory"</span><span style="color: #ff0000;"> class</span><span style="color: #0000ff;">="org.mybatis.spring.SqlSessionFactoryBean"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="dataSource"</span><span style="color: #ff0000;"> ref</span><span style="color: #0000ff;">="dataSource"</span><span style="color: #0000ff;">></</span><span style="color: #800000;">property</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 制定Mybatis的配置 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="configLocation"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="classpath:config/mybatis-config.xml"</span> <span style="color: #0000ff;">/></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 指定实体类映射文件,可以指定同时指定某一包以及子包下面的所有配置文件,mapperLocations和configLocation有一个即可, 当需要为实体类指定别名时,可指定configLocation属性,再在mybatis总配置文件中采用mapper引入实体类映射文件 </span><span style="color: #008000;">--></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> <property name="mapperLocations" value="classpath*:com/mapper/*.xml"/> </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">bean</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 3. mybatis自动扫描加载Sql映射文件/接口 : MapperScannerConfigurer sqlSessionFactory basePackage:指定sql映射文件/接口所在的包(自动扫描) </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">bean </span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="org.mybatis.spring.mapper.MapperScannerConfigurer"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="basePackage"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="com.mapper"</span><span style="color: #0000ff;">></</span><span style="color: #800000;">property</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="sqlSessionFactory"</span><span style="color: #ff0000;"> ref</span><span style="color: #0000ff;">="sqlSessionFactory"</span><span style="color: #0000ff;">></</span><span style="color: #800000;">property</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">bean</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 4. 事务管理 : DataSourceTransactionManager dataSource:引用上面定义的数据源 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">bean </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="txManager"</span><span style="color: #ff0000;"> class</span><span style="color: #0000ff;">="org.springframework.jdbc.datasource.DataSourceTransactionManager"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="dataSource"</span><span style="color: #ff0000;"> ref</span><span style="color: #0000ff;">="dataSource"</span><span style="color: #0000ff;">></</span><span style="color: #800000;">property</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">bean</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 5. 使用声明式事务 transaction-manager:引用上面定义的事务管理器 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">tx:annotation-driven </span><span style="color: #ff0000;">transaction-manager</span><span style="color: #0000ff;">="txManager"</span> <span style="color: #0000ff;">/></span>
</beans>
spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<span style="color: #008000;"><!--</span><span style="color: #008000;"> 一般使用<context:component-scan/>来代替 <context:annotation-config/>,因为前者不仅配置扫描包路径选项还自动注入了下述processor的功能。 详解: <context:annotation-config/>向 Spring 容器注册AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、 PersistenceAnnotationBeanPostProcessor、 RequiredAnnotationBeanPostProcessor 这 4 个BeanPostProcessor。目的是为了你的系统能够识别相应的注解。 例如:@Autowired注解,对应 AutowiredAnnotationBeanPostProcessor的Bean。传统声明方式如下<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor "/> @Resource 、@PostConstruct、@PreDestroy对应CommonAnnotationBeanPostProcessor @PersistenceContext对应PersistenceAnnotationBeanPostProcessor的Bean。 @Required对应RequiredAnnotationBeanPostProcessor的Bean。 一般来说,这些注解我们还是比较常用,尤其是Antowired的注解,在自动注入的时候更是经常使用,所以如果总是需要按照传统的方式一条一条配置显得有些繁琐和没有必要, 于是spring给我们提供<context:annotation-config/>的简化配置方式,自动帮你完成声明。 不过,呵呵,我们使用注解一般都会配置扫描包路径选项 <context:component-scan base-package=”XX.XX”/>该配置项其实也包含了自动注入上述processor的功能,因此当使用 <context:component-scan/> 后,就可以将 <context:annotation-config/> 移除了。 </span><span style="color: #008000;">--></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 注解扫描包 </span><span style="color: #008000;">--></span> <span style="background-color: #ffff00;"><span style="color: #0000ff;"><</span><span style="color: #800000;">context:component-scan </span><span style="color: #ff0000;">base-package</span><span style="color: #0000ff;">="com"</span> <span style="color: #0000ff;">/></span></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 开启注解 </span><span style="color: #008000;">--></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的。 并提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)。 后面,我们处理响应ajax请求时,就使用到了对json的支持。 后面,对action写JUnit单元测试时,要从spring IOC容器中取DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,来完成测试, 取的时候要知道是<mvc:annotation-driven />这一句注册的这两个bean。 </span><span style="color: #008000;">--></span> <span style="background-color: #ffff00;"><span style="color: #0000ff;"><</span><span style="color: #800000;">mvc:annotation-driven </span><span style="color: #0000ff;">/></span></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 配置静态资源,直接映射到对应的文件夹,不被DispatcherServlet拦截而出现404找不到图片的问题,3.04新增功能,需要重新设置spring-mvc-3.0.xsd </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">mvc:resources </span><span style="color: #ff0000;">mapping</span><span style="color: #0000ff;">="/img/**"</span><span style="color: #ff0000;"> location</span><span style="color: #0000ff;">="/img/"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">mvc:resources </span><span style="color: #ff0000;">mapping</span><span style="color: #0000ff;">="/js/**"</span><span style="color: #ff0000;"> location</span><span style="color: #0000ff;">="/js/"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">mvc:resources </span><span style="color: #ff0000;">mapping</span><span style="color: #0000ff;">="/css/**"</span><span style="color: #ff0000;"> location</span><span style="color: #0000ff;">="/css/"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">mvc:resources </span><span style="color: #ff0000;">mapping</span><span style="color: #0000ff;">="/html/**"</span><span style="color: #ff0000;"> location</span><span style="color: #0000ff;">="/html/"</span> <span style="color: #0000ff;">/><br /></span> <span style="color: #008000;"><!-- 当上面要访问的静态资源不包括在上面的配置中时,则根据此配置来访问 --></span><br /><span style="color: #008000;"> <mvc:default-servlet-handler/></span></pre>
<!-- 定义跳转的文件的前后缀 ,视图模式配置--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> </beans>
第八步,web.xml文件
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<span style="color: #008000;"><!--</span><span style="color: #008000;"> 加载Spring容器配置 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">listener</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">listener-class</span><span style="color: #0000ff;">></span>org.springframework.web.context.ContextLoaderListener<span style="color: #0000ff;"></</span><span style="color: #800000;">listener-class</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">listener</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 设置Spring容器加载所有的配置文件的路径 ,默认加载的是web-inf下的applicationcontext.xml文件,此处是自定义</span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">context-param</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param-name</span><span style="color: #0000ff;">></span>contextConfigLocation<span style="color: #0000ff;"></</span><span style="color: #800000;">param-name</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param-value</span><span style="color: #0000ff;">></span>classpath*:config/spring-*.xml<span style="color: #0000ff;"></</span><span style="color: #800000;">param-value</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">context-param</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 配置SpringMVC核心控制器 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">servlet</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">servlet-name</span><span style="color: #0000ff;">></span>springMVC<span style="color: #0000ff;"></</span><span style="color: #800000;">servlet-name</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">servlet-class</span><span style="color: #0000ff;">></span>org.springframework.web.servlet.DispatcherServlet<span style="color: #0000ff;"></</span><span style="color: #800000;">servlet-class</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 默认加载的是wen-inf下的XXX-servlet.xml(springMVC-servlet.xml)文件,此处自定义 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">init-param</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param-name</span><span style="color: #0000ff;">></span>contextConfigLocation<span style="color: #0000ff;"></</span><span style="color: #800000;">param-name</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param-value</span><span style="color: #0000ff;">></span>classpath*:config/spring-mvc.xml<span style="color: #0000ff;"></</span><span style="color: #800000;">param-value</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">init-param</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 启动加载一次 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">load-on-startup</span><span style="color: #0000ff;">></span>1<span style="color: #0000ff;"></</span><span style="color: #800000;">load-on-startup</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">servlet</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;">为DispatcherServlet建立映射 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">servlet-mapping</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">servlet-name</span><span style="color: #0000ff;">></span>springMVC<span style="color: #0000ff;"></</span><span style="color: #800000;">servlet-name</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 此处可以可以配置成*.do </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">></span>/<span style="color: #0000ff;"></</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">servlet-mapping</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 防止Spring内存溢出监听器 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">listener</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">listener-class</span><span style="color: #0000ff;">></span>org.springframework.web.util.IntrospectorCleanupListener<span style="color: #0000ff;"></</span><span style="color: #800000;">listener-class</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">listener</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 解决工程编码过滤器 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">></span>encodingFilter<span style="color: #0000ff;"></</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">filter-class</span><span style="color: #0000ff;">></span>org.springframework.web.filter.CharacterEncodingFilter<span style="color: #0000ff;"></</span><span style="color: #800000;">filter-class</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">init-param</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param-name</span><span style="color: #0000ff;">></span>encoding<span style="color: #0000ff;"></</span><span style="color: #800000;">param-name</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param-value</span><span style="color: #0000ff;">></span>UTF-8<span style="color: #0000ff;"></</span><span style="color: #800000;">param-value</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">init-param</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">init-param</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param-name</span><span style="color: #0000ff;">></span>forceEncoding<span style="color: #0000ff;"></</span><span style="color: #800000;">param-name</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param-value</span><span style="color: #0000ff;">></span>true<span style="color: #0000ff;"></</span><span style="color: #800000;">param-value</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">init-param</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">filter-mapping</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">></span>encodingFilter<span style="color: #0000ff;"></</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">></span>/*<span style="color: #0000ff;"></</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">filter-mapping</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">welcome-file-list</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">welcome-file</span><span style="color: #0000ff;">></span>index.jsp<span style="color: #0000ff;"></</span><span style="color: #800000;">welcome-file</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">welcome-file-list</span><span style="color: #0000ff;">></span>
</web-app>
第九步,写一个jsp文件吧,因为才controller中,return的是allUser。就写一个allUser文件吧。
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>">
<span style="color: #0000ff;"><</span><span style="color: #800000;">title</span><span style="color: #0000ff;">></span>ssm<span style="color: #0000ff;"></</span><span style="color: #800000;">title</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">meta </span><span style="color: #ff0000;">http-equiv</span><span style="color: #0000ff;">="pragma"</span><span style="color: #ff0000;"> content</span><span style="color: #0000ff;">="no-cache"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">meta </span><span style="color: #ff0000;">http-equiv</span><span style="color: #0000ff;">="cache-control"</span><span style="color: #ff0000;"> content</span><span style="color: #0000ff;">="no-cache"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">meta </span><span style="color: #ff0000;">http-equiv</span><span style="color: #0000ff;">="expires"</span><span style="color: #ff0000;"> content</span><span style="color: #0000ff;">="0"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">meta </span><span style="color: #ff0000;">http-equiv</span><span style="color: #0000ff;">="keywords"</span><span style="color: #ff0000;"> content</span><span style="color: #0000ff;">="keyword1,keyword2,keyword3"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">meta </span><span style="color: #ff0000;">http-equiv</span><span style="color: #0000ff;">="description"</span><span style="color: #ff0000;"> content</span><span style="color: #0000ff;">="This is my page"</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> <link rel="stylesheet" type="text/css" href="styles.css"> </span><span style="color: #008000;">--></span>
</head>
<body>
<table border=“1”>
<tbody>
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>
<c:if test="KaTeX parse error: Expected 'EOF', got '#' at position 47: … style="color: #̲0000ff;">></…{listUser}" var=“list”>
<tr>
<td>KaTeX parse error: Expected 'EOF', got '#' at position 37: … style="color: #̲0000ff;"></<…{list.age }</td><span style="color: #0000ff;"></</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">c:forEach</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">c:if</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">tbody</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">table</span><span style="color: #0000ff;">></span>
</body>
View Code
</html>第十步,执行吧,开启tomcat服务器,输入:
http://localhost:8080/SSM/user/findAllUser
得到的如下图:
把数据库的数据都显示出来了。
</div><!--end: forFlow --> </div><!--end: mainContent 主体内容容器--> <div id="sideBar"> <div id="sideBarMain">
<div id="calendar"><div id="calendar"><div id="blog-calendar" style="display:none"></div></div> <script>loadBlogDefaultCalendar();</script></div> <DIV id="leftcontentcontainer"> <div id="blog-sidecolumn"></div> <script>loadBlogSideColumn();</script> </DIV> </div><!--end: sideBarMain --> </div><!--end: sideBar 侧边栏容器 --> <div class="clear"></div> <div class="clear"></div> </div><!--end: main --> <div class="clear"></div> <div id="footer"> <!--done-->
Copyright © 2019 siv8
Powered by .NET Core 3.0.0-preview9-19423-09 on Linux谨以此模板祝贺【博客园开发者征途】系列图书之《你必须知道的.NET》出版发行