普通的mvc配置
在web.xml中
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--
DispatcherServlet在执行初始化方法时,
会启动spring容器,所以,需要指定spring
配置文件的位置。
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
请求 到首先先匹配 url-pattern,如果匹配成功,则 再 到servlet-mapping中的servlet-name。
再到servlet中的servlet-name,最后到servlet-class
Spring+Jdbc
简单配置
1.在配置文件中填写配置信息
maxactive=1
maxwait=5000
classname=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:xe
username=jsd1607
password=1234
2在resources/applicationContext.xml中 读取配置信息
<util:properties id="config"
location="classpath:config.properties"/>
<!-- 配置DataSource -->
<bean id="ds" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="#{config.classname}" />
<property name="url" value="#{config.url}" />
<property name="username" value="#{config.username}" />
<property name="password" value="#{config.password}" />
</bean>
3.配置JdbcTemplate
<bean id="jt" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="ds" />
</bean>
4.设置组件扫描
<bean id="jt" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="ds" />
</bean>
5,写相对应的实体类
package entity;
public class Emp {
private Integer id;
private String ename;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Emp [id=" + id + ", ename=" + ename + ", age=" + age + "]";
}
}
6.实现JDBC
package dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import entity.Emp;
@Repository("empDAO")
public class EmpDAO {
@Resource(name="jt")
private JdbcTemplate jt;
/**
* spring jdbc 将底层的jdbc异常
* 捕获之后,统一转换成了一些运行时
* 异常(RuntimeException),然后抛出。
*/
public void save(Emp emp){
String sql = "INSERT INTO emp "
+ "VALUES(emp_seq.nextval,?,?)";
Object[] args =
new Object[]{emp.getEname(),
emp.getAge()};
jt.update(sql, args);
}
public List<Emp> findAll(){
String sql = "SELECT * FROM emp";
return jt.query(sql, new EmpRowMapper());
}
/*
* queryForObject方法:如果找不到
* 对应的记录,会抛出异常。
*/
public Emp findById(int id){
String sql = "SELECT * FROM emp "
+ "WHERE id = ?";
Object[] args =
new Object[]{id};
return jt.queryForObject(
sql,args, new EmpRowMapper());
}
public Emp findById2(int id){
String sql = "SELECT * FROM emp "
+ "WHERE id = ?";
Object[] args =
new Object[]{id};
List<Emp> emps =
jt.query(sql, args,
new EmpRowMapper());
if(emps != null && emps.size() > 0){
return emps.get(0);
}
return null;
}
public void modify(Emp emp){
String sql = "UPDATE emp "
+ "SET ename=?,age=? "
+ "WHERE id=?";
Object[] args =
new Object[]{emp.getEname(),
emp.getAge(),
emp.getId()};
jt.update(sql, args);
}
public void delete(int id){
String sql = "DELETE FROM emp "
+ "WHERE id=?";
Object[] args =
new Object[]{id};
jt.update(sql, args);
}
/*
* RowMapper类封装了如何将记录
* 转换成相应的实体对象。
*/
class EmpRowMapper
implements RowMapper<Emp>{
//index:正在被遍历的记录的下标。
public Emp mapRow(
ResultSet rs, int index)
throws SQLException {
Emp emp = new Emp();
emp.setId(rs.getInt("id"));
emp.setEname(rs.getString("ename"));
emp.setAge(rs.getInt("age"));
return emp;
}
}
}
`