springJdbc+springMVC和dwr以及servlet的整合
现在springMVC的整合吧
第一步:web.xml的配置
?
<servlet><servlet-name>spring</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>spring</servlet-name><url-pattern>/</url-pattern></servlet-mapping><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>?
???? ?dwr的配置()
?<servlet>? ?? <servlet-name>dwr-invoker</servlet-name>?? <servlet-class> org.directwebremoting.spring.DwrSpringServlet?</servlet-class></servlet><servlet-mapping>? <servlet-name>dwr-invoker</servlet-name>? <url-pattern>/dwr/*</url-pattern></servlet-mapping>
?
第二步:WEB-INF/spring-servlet.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"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><!-- 定义一个视图解析器 --><bean id="viewResolver"p:suffix=".jsp" /></beans>
?
第三步: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" xmlns:context="http://www.springframework.org/schema/context"xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr" xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"><!-- 激活spring的注解. --><context:annotation-config /><!-- 扫描注解组件并且自动的注入spring beans中. 例如,他会扫描@Controller 和@Service下的文件.所以确保此base-package设置正确. --><context:component-scan base-package="net.rytong" /><!-- 配置注解驱动的Spring MVC Controller 的编程模型.注:次标签只在 Spring MVC工作! --> <mvc:annotation-driven /> <mvc:default-servlet-handler default-servlet-name="IndexServlet"/> <!-- ********************************************** --> <!-- dwr启用 annotation 配置模式 --><dwr:configuration> <dwr:convert type="bean" /></dwr:configuration><!-- pring容器中检查拥有@RemoteProxy 和 @RemoteMethod注解的类 --><dwr:annotation-config /><!-- 开启debug --><dwr:controller id="dwrController" debug="true" /> <!-- ********************************************** --> <!-- 导入jdbc的配置文件 --><import resource="jdbc-context.xml" /></beans>
?
第四步:数据源jdbc-context.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:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd "><!-- <context:property-placeholder location="classpath:db.properties" /> --><bean id="dataSource" value="${jdbc.driverClassName}" /><property name="driverUrl" value="${jdbc.url}" /><property name="user" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><property name="maximumConnectionCount" value="300" /><property name="minimumConnectionCount" value="10" /><property name="prototypeCount" value="4" /><property name="maximumActiveTime" value="600000" /><property name="simultaneousBuildThrottle" value="5" /><property name="testBeforeUse" value="true" /><property name="houseKeepingTestSql" value="SELECT CURRENT_DATE" /></bean><!-- 定义jdbc配置信息路径 --><context:property-placeholder location="/WEB-INF/db.properties" /> <!-- 使用annotation定义事务 --><tx:annotation-driven transaction-manager="transactionManager" /><!-- 定义事务管理 --><!-- See http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/transaction.html --><bean id="transactionManager" p:dataSource-ref="dataSource" /> </beans>
?dao的代码:
@Repository("personDao")public class PersonDao {private SimpleJdbcTemplate jdbcTemplate;@Resource(name="dataSource")public void setDataSource(DataSource dataSource) { this.jdbcTemplate = new SimpleJdbcTemplate(dataSource);}public List<Person> getAllPerson() {String sql = "select id, first_name, last_name, money from person";// Maps a SQL result to a Java objectRowMapper<Person> mapper = new RowMapper<Person>() { public Person mapRow(ResultSet rs, int rowNum) throws SQLException { Person person = new Person(); person.setId(rs.getInt("id")); person.setFirstName(rs.getString("first_name")); person.setLastName(rs.getString("last_name")); person.setMoney(rs.getDouble("money")); return person; } };return jdbcTemplate.query(sql, mapper);}}
??service中的代码:
@Service("personService")@RemoteProxy(name="PersonService")public class PersonService {protected static Logger logger = Logger.getLogger("service");@Autowiredprivate PersonDao personDao;/** *检索所有的Person */@RemoteMethodpublic List<Person> getAll() {logger.debug("Retrieving all persons");System.out.println(personDao+"==========");return personDao.getAllPerson();}}
?control中的代码:
?
@Controller@RequestMapping("/main")public class MainController {protected static Logger logger = Logger.getLogger("controller");@Resource(name="personService")private PersonService personService;/** *获得所有的Person并返回到指定JSP页面 * * @return the name of the JSP page */ @RequestMapping(value = "/persons.do", method = RequestMethod.GET) public String getPersons(Model model) { logger.debug("Received request to show all persons"); // 调用personService中的getAll获得所有的Person List<Person> persons = personService.getAll(); // 把Person装入一个指定的model model.addAttribute("persons", persons); // 解析 /WEB-INF/jsp/personspage.jsp return "personspage";}
?
要想servlet要spring容器来管理,在web.xml中 去掉springMVC配置 加上如下配置:
?
<servlet> <servlet-name>UserLoginServlet</servlet-name> <servlet-class>net.rytong.servlet.ServletProxy</servlet-class> </servlet> <servlet-mapping> <servlet-name>UserLoginServlet</servlet-name> <url-pattern>/UserLoginServlet</url-pattern> </servlet-mapping>
?并加上这个代理类
@SuppressWarnings("serial")public class ServletProxy extends GenericServlet { private Servlet proxy; @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { proxy.service(req, res); } @Override public void init() throws ServletException { WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()); System.out.println(getServletName()+"==============="); this.proxy = (Servlet) wac.getBean(getServletName()); proxy.init(getServletConfig()); }}
?
具体代码下载:(?数据库是基于mysql,jar包管理是Maven? 下载后报错请修改pom.xml)
?