主要是配置applicationContext和springmvc.xml
applicationContext.xml包括引入数据库属性文件,组件扫描排除controller层的service层和dao层
创建dataSource的bean对象及其属性,属性时数据库连接的属性,
创建sqlSession的bean对象,注入数据源,配置hibernate的属性sql的格式化,创建表,方言;
创建事务管理的bean对象,注入sqlSession对象,
使用事务管理的注解方式:<tx:annotation-driven transationManager="transationManager"/>
springmvc.xml
组件扫描包含controller层 排除service层和dao层
配置内容协商管理bean对象 包含 媒体类型属性和默认内容类型;
《mvc:anotation-driven》
mvc:default-servlet-handler
和视图解析器 前缀和后缀
实体类 ,@Entity @Table
(name = "person")
controller类@Controller service类 @Service dao类采用注解方式@Repository;
类里采用
@Autowired
private PersonService personService;
自动注入要调用 的类;@Autowired public PersonDAO personDAO;@Resource private SessionFactory sessionFactory;
采用此类注解,配置文件里就不用配置相应bean对象;
1、引入相应的jar包,spring的包:spring-aop spring-aspect spring-context spring-beans spring-core spring-orm spring-expression spring-tx spring-test spring-web spring-jdbc 大概11个
hibernate包:hibernate3 ,lib下required下的包:jta javaassist slf4j commons-collections dom4j antrl 及hibernate-jpa 大概8个
还有mysql-connect-java
sping依赖的包 spingsource...mchange...c3p0 springsource....commons-logging spingsource..aop.. springsource...aspect... springsource.log4j.slf4j-log4j大约7个
2
建立包及类 com.mz.wfy.domain Person.java
private String id;// 主键id name;// 姓名 idCard;// 身份证号 phone;// 手机号 address;//
以上都是string类型 封装 和 toString 方法 get方法使用注解@Id @Column(name = "id", nullable = false, unique = true) @GenericGenerator(name = "generator", strategy = "uuid") @GeneratedValue(generator = "generator")
@Column(name = "name", nullable = false, length = 32)
建立对应的hibernate 映射文件User.hbm.xml 使数据库的表和实体映射;hibernate-mapping 中有class 节点(name table 属性)下面有id (包括generator节点)property节点(name colomn属性)
com.mz.wfy.controller PersonController.java
@SessionAttributes(value = "username") @Controller //使用该注解标志它是一个控制器 @RequestMapping(value = "/person") public class PersonController { @Autowired public PersonService personService; /** * 登录请求,失败返回error.jsp * * @param username * @param password * @return */ @RequestMapping("/login") public String dologin(String username, String password, Map<String, Object> map) { if (username.equals("admin") && password.equals("admin")) { map.put("username", username);//存放在request请求域中 /** * 类上加上@SessionAttributes({"username"}) 同时也会存放在 session域中 * @SessionAttributes 除了可以通过属性名指定需要存放到会话中的属性外(使用的是value属性值) * 还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中(实际上使用的是types属性值), */ return "frame"; } return "error"; } /** * 保存添加的数据 * * @param person * @return */ @RequestMapping(value = "/saveperson") public String saveperson(Person person) { personService.addPerson(person); return "redirect:main"; } /** * 跳转到添加页面 * savepage.jsp * @return */ @RequestMapping(value = "/addperson") public String saveperson() { return "savepage"; } /** * 删除一条数据 * * @param id * @return */ @RequestMapping(value = "/deletePersonById") public String deletePersonById(@RequestParam(value = "id") String id) { System.out.println("删除单个"); personService.deletePersonById(id); return "redirect:main"; } /** * 跳转到更新页面,回显数据 * editpage.jsp * @param id * @param model 使用的Model保存回显数据 * @return */ @RequestMapping(value = "/doupdate") public String doupdate(@RequestParam(value = "id") String id, Model model) { model.addAttribute("person", personService.getPersonById(id)); return "editpage"; } /** * 更新数据 * * @param person * @return */ @RequestMapping(value = "/updateperson") public String updateperson(Person person) { System.out.println(person.toString()); personService.updatePerson(person); return "redirect:main"; } /** * 查询所有人员信息 * * @param map 使用的是map保存回显数据 * @return */ @RequestMapping(value = "/main") public String mian(Map<String, Object> map) { map.put("personlist", personService.getPersons()); /*遍历集合,查看查询到的数据 * List<Person> lists = personService.getPersons(); * Iterator<Person> it = lists.iterator(); * while(it.hasNext()){ * Person p =it.next(); * System.out.println(p.toString()); * } */ return "main"; } }
com.mz.wfy.service PersonService
com.mz.wfy.dao PersonDao
private Session getSession() { return sessionFactory.getCurrentSession(); } /** * 根据id查询 * @param id * @return */ public Person getPersonById(String id) { return (Person) this.getSession().createQuery("from Person where id=?").setParameter(0, id).uniqueResult(); } /** * 添加 * @param person */ public void addPerson(Person person) { this.getSession().save(person); } /** * 更新 * @param person */ public void updatePerson(Person person) { this.getSession().update(person); } /** * 删除 * @param id */ public void deletePersonById(String id) { this.getSession().createQuery("delete Person where id=?").setParameter(0, id).executeUpdate(); } /** * 查询所有 * @return */ @SuppressWarnings("unchecked") public List<Person> getPersons() { return this.getSession().createCriteria(Person.class).list(); }
3.建立各种属性文件和配置文件,A jdbc.properties
jdbc.driverClass=com.mysql.jdbc.Driver; jdbc .url=jdbc:mysql://localhost:3306/sprsh?useUnicode=yes&characterEncoding=utf-8
jdbc.uername=root jdbc.password=123456
B log4j.properties .........百度搜一下就可以了,这个以后详细研究下;
C applicationContext.xml
<context:component-scan base-package="com.mz.wfy"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan>
a 引入外部属性文件 jdbc.properties 使用
<context:property-placeholder location=“classpath:jdbc.properties”/>
b 配置连接池,datasource数据源bean对象
<bean id="dataSource" class="com.springframework.org.mchange.c3p0....>
<property name="driverClass" value="${ jdbc .driverClass}"/>
<property name="jdbcUrl" value="${ jdbc .url}"/>
<property name="jdbc.user" value="${ jdbc .username}"/>
<property name="jdbc.password" value="${ jdbc password}/>
</bean>
c 配置hibernate属性 sessionFactory 的bean对象
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!--注入连接池-->
<property name="dataSource" ref="dataSource"></property>
<!--配置hibernate相关属性>
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
<!--加载hibernate映射文件-->
<property name="mappingResources"><list>
<value>com/mz/wyf/Department.hbm.xml</value>
<value>com/mz/wyf/Employee.hbm.xml</value>
</list>
</property>或者
<property name="packagesToScan"> <list> <value>com.mz.wfy.domain</value> </list> </property>
</bean>
<bean id="employeeAction" class="com.mz.wfy.action.EmployeeAction.java">
<property name="employeeService" ref="employeeService"></property>
</bean>
<!--配置service类-->
<bean id="employeeService" class="com.mz.wfy.action.EmployeeService.java">
<property name="employeeDao" ref="employeeDao"></property>
</bean>
<!--配置dao类-->
<bean id="employeeService" class="com.mz.wfy.action.EmployeeDao.java">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!--事务管理-->
<bean id="transactonManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<tx:annotation-driven transactonManager="transactonManager" />
</bean>
<!--包扫描controller层-->
<!--
<context:component-scan base-package="com.mz.wfy.controller">
<context:exclude-filter type="annotation" expression="org.springframwork.stereotype.Service"/>
</context:component-scan>
-->
<context:component-scan base-package="com.mz.wfy">
<context:include-filter type="annotation" expression="org.springframwork.stereotype.Controller"/>
<context:exclude-filter type="annotation" expression="org.springframwork.stereotype.Service"/>
<context:exclude-filter type="annotation" expression="org.springframwork.stereotype.Repository"/>
</context:component-scan>
<!--配置视图解析器,把handler返回的值解析为为实际的物理图-->
<!--
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean
class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
内容协商管理,媒体类型和默认内容类型
<bean id="contentNegotiationManager" class="org.springframwork.web.accept.ContentNegotiationManangerFactoryBean">
<property name="mediaTypes">
<map>
<entry key="json" value="application/json"/>
<entry key="xml" value="application/xml"/>
<entry key="html" value="text/html/>
</map>
</property>
<property name="defaultContentType" value="text/html"/>
</bean>
内容协商管理视图解析 ,解析为实际的物理视图;
<bean class="org.spingfamework.web.servlet.view.ContentNegotiationViewResolver">
<property name="order" value="0"/>
<property name="contentNegotiationManager" ref="contentNegotiationManager"/>
<property name="viewResolvers">
<list>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="1">
<property name="prefix" value="/WEB-INF/view/" ></property>
<property name="suffix" value=".jsp" ></property>
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="2">
<property name="prefix" value="/WEB-INF/view/" ></property>
<property name="suffix" value=".html" ></property>
</bean>
<list>
</property>
</bean>
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/" ></property>
<property name="suffix" value=".jsp" ></property>
</bean>
<!--静态资源交给默认的servlet-->
<mvc:default-servlet-handler/>
<!--代替注解映射器和注解适配器配置requestmappinghandlermapping requestmappinghandleradapter ,默认加载许多参数绑定的方法-->
<mvc:annotation-driven></mvc:annotation-driven>