作者:端庄的张佳迎 | 来源:互联网 | 2023-09-16 17:48
Spring整合Web项目ApplicationContext类处于Action层,每产生一个Action会存在效率问题实现原理1.ServletContext对象(只有唯一的一个
Spring 整合 Web 项目
ApplicationContext 类处于 Action 层,每产生一个 Action 会存在效率问题
实现原理
- ServletContext 对象(只有唯一的一个对象)
监听器
在服务器启动时,为每个项目创建一个 ServletContext 对象
监听到 ServeletContext 创建时,加载 Spring 配置文件并创建配置好的对象
将对象放到 ServeletContext 对象中 (setArrtibute方法)
获取对象(getAttribute方法)
配置监听器
需要导入 spring-web jar 包
// web.xml
org.springframework.web.context.ContextLoaderListener
指定 spring 配置文件位置
// web.xml
// 默认会找\WEB-INF\applicationContext.xml
contextConfigLocation
classpath:applicationContext.xml
Spring 的 JdbcTemplate 操作
Spring 对不同的持久化技术都进行了封装 (Dao 层技术)
准备
- 导入 Jar 包
// 1。 创建对象,设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSourrce.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///test");
dataSource.setUsername("root");
dataSource.setPardword("root");
// 2. 创建 jdbcTemplate 对象,设置数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
// 3. 使用 jdbcTemplate 的方法进行操作
// 增加数据
String sql = "insert into table values(?,?)";
int rows = jdbcTemplate.updae(sql, "Jeson", "100");
System.out.println(rows);
// 删除数据
String sql = "delete from table where xx=?";
int rows = jdbcTemplate.update(sql, "xxx");
System.out.println(rows);
// 修改数据
String sql = "update table set xx=? where xx=?";
int rows = jdbcTemplate.update(sql, "xxx", "xxx");
System.out.println(rows);
// 查询数据
// 查询返回一个值
String sql = "seletc count(*) from table";
int count = jdbcTemplate.queryForObject(sql, Integer.class);
System.out.println(count);
// 查询返回对象
class MyRowMapper implements RowMapper {
@Override
public User mapRow(ResultSet rs, int num) throws SQLException {
// 从结果集得到数据并封装到自己定义的类中
String username = rs.getString("username");
String password = rs.getString("password");
User user = new User();
user.setUseranme(username);
user.setPassword(password);
return user;
}
}
String sql = "select * from table where xx=?";
User user = jdbcTemplate.queryForObject(sql, new MyRowMapper(), "xx");
System.out.println(user);
// 查询返回 List
String sql = "select * from talbe";
List list = jdbcTemplate.query(sql, new MyRowMapper());
Syste.out.println(list);
Spring 配置连接池和 Dao 使用 JdbcTemplate
Spring 配置 c3p0 连接池
jar包:c3p0 和 machange-commons-java
~xml
~
Dao 使用 JdacTemplate
@Component(value="userDao")
public class UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public void show() {
String sql = "select * from talble";
List list = jdbcTemplate.queryForByObject(sql, new MyRowMapper());
// TODO
}
}