第一步,在web.xml里面配置
spring在web环境中的配置(2种)
1.在Web.xml中配置上下文载入器
根据你的系统情况,你可以选择两种上下文载入器:ContextLoaderListener和ContextLoaderServlet.
如果你的Web容器支持Servlet2.3标准或更高,你可以使用两者,否则只能使用后者.
(1)ContextLoaderListener在Web.xml应该如下配置:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
(2)ContextLoaderServlet在Web.xml应该如下配置:
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>
org.springframework.web.context.ContextLoaderServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
第二步,在WEB-INF下建立applicationContext.xml
1、导入spring25.jar包
2、spring 2.5 dtd配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<beans/>
3、 使用Spring的Dao支持来写Dao层,继承JdbcDaoSupport类,JdbcDaoSupport类中有一个字段dataSource
也就是数据库连接,因此只需继承JdbcDaoSupport类,并给它注入dataSource,就隐式的获得了数据库连接,可以在bean.xml文件中
注入connection(即:dataSource)
<beans>
<!-- spring 方式获得dataSource-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<property name="url"><value>jdbc:mysql://localhost:3306/j2ee</value></property>
<property name="username"><value>root</value></property>
<property name="password"><value>123456</value></property>
</bean>
<bean id="xxx" class="包名.类名(dao的实现类)">
<property name="dataSource">
<ref local="dataSource"/>
</property>
</bean>
</beans>
4、applicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
//注入数据源:这是oracle的
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"><value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url"><value>jdbc:oracle:thin:@127.0.0.1:1521:orcl</value>
</property>
<property name="username"><value>company</value>
</property>
<property name="password"><value>company</value>
</property>
</bean>
//注入数据源:这是mysql的
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<property name="url"><value>jdbc:mysql://localhost:3306/j2ee</value></property>
<property name="username"><value>root</value></property>
<property name="password"><value>123456</value></property>
</bean>
<bean id="personDaoSupport" class="com.lxit.dao.impl.PersonDaoImplSupport(dao层的实现类:包名.类名)">
<property name="dataSource"><ref local="dataSource"/>
</property>
</bean>
<bean id="personService" class="com.lxit.service.impl.PersonServiceImpl(service层的实现类:包名.类名)">
<property name="personDao(service实现类的属性名:要和service层实现类的属性名一致)" ref="personDaoSupport(这里要和上面配置的实现dao层的实现类的id一致)"></property>
</bean>
<beans/>
第三步,在dao层写实现类
1、继承JdbcDaoSupport类
2、在这个Dao 实现类中写一个内部类,使其实现:RowMapper接口,用来封装成具体的pojo对象,代码如下
private class PersonRowMapper implements RowMapper
{
public Object mapRow(ResultSet resultSet, int rowNumber)
throws SQLException {
User user = new User();
user.setId(resultSet.getLong("id"));
user.setName(resultSet.getString("name"));
user.setSex(resultSet.getString("sex"));
user.setAge(resultSet.getInt("age"));
user.setAddr(resultSet.getString("addr"));
return user;
}
}
3、通过dao层的实现类进行增删查询修改操作
(1)增加 修改 删除示例
public void createPerson(PersonBean p)
{
Object[] args = {p.getName() , new Integer(p.getAge()) };
getJdbcTemplate().update("insert into person_test(p_name,p_age) values(?,?)", args );
}
(2)查询 返回单个object
public PersonBean getPerson(int id)
{
Object[] args = {new Integer(id)};
//PersonRowMapper是刚刚的内部类
return (PersonBean)getJdbcTemplate().queryForObject("select p_name,p_age from person_test where p_id = ?", args, new PersonRowMapper());
}
(3)返回list
public List findPersonsByName(String name)
{
//PersonRowMapper是刚刚的内部类
return getJdbcTemplate().query("select * from person_test where p_name like '%" + name +"%'" , new PersonRowMapper());
}
第四步,在action里面进行调用即可
代码如下:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
System.out.println("进入execute方法");
WebApplicationContext beanFactory = WebApplicationContextUtils
.getWebApplicationContext(this.getServlet().getServletContext());
PersonService person = (PersonService) beanFactory.getBean("personService");
request.setAttribute("list", person.findAll());
return mapping.findForward("success");
}