JavaWeb 通过配置切换底层存储源
2014-11-29 20:18
393 查看
本文为学习佟刚JavaWeb MVC模式笔记
A 深入理解面向接口编程:在类中调用接口的方法,而不必关心具体的实现。这将有利于代码的解耦。使程序有更好的可移植性和可扩展性
B动态修改Customer的存储方式:通过修改类路径下的switch.properties文件的方式来实现
1 .CustomerServlet中不能在通过privateCustomerDAOcustomerDAO= new CustomerDAOXMLImpl();的方式来写死实现类
2 . 需要通过一个类的一个方法来获取具体的实现类的对象
C 当前 WEB 应用才启动的时候,InitServlet 被创建,并由 Servlet 容器调用其 init() 方法:
1.读取类路径下的switch.properties 文件
2.获取 switch.properties 的 type 属性值
3.赋给了 CustomerDAOFactory 的 type 属性值
InitServlet.java如下:
并需要在web.xml中进行配置:
创建 CustomerServlet 时,为 customerDAO 属性赋值是通过CustomerDAOFactory 的 getCustomerDAO() 方法完成的。此时的 type 已经在 InitServlet 中被赋值了。
CustomerFactory.java如下:
A 深入理解面向接口编程:在类中调用接口的方法,而不必关心具体的实现。这将有利于代码的解耦。使程序有更好的可移植性和可扩展性
B动态修改Customer的存储方式:通过修改类路径下的switch.properties文件的方式来实现
1 .CustomerServlet中不能在通过privateCustomerDAOcustomerDAO= new CustomerDAOXMLImpl();的方式来写死实现类
2 . 需要通过一个类的一个方法来获取具体的实现类的对象
C 当前 WEB 应用才启动的时候,InitServlet 被创建,并由 Servlet 容器调用其 init() 方法:
1.读取类路径下的switch.properties 文件
2.获取 switch.properties 的 type 属性值
3.赋给了 CustomerDAOFactory 的 type 属性值
InitServlet.java如下:
<span style="font-size:14px;">package com.ali.mvc.servlet; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import com.ali.mvc.dao.factory.CustomerFactory; public class InitServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; public void init() throws ServletException { super.init(); // 设置默认值 CustomerFactory.getInstance().setType("jdbc"); // 读取类路径下的switch.properties文件 InputStream in = getServletContext().getResourceAsStream( "/WEB-INF/classes/switch.properties"); Properties properties = new Properties(); try { properties.load(in); // 将获得的type付给CustomerFactory的type String type = properties.getProperty("type"); if (type != null) { CustomerFactory.getInstance().setType(type); } else { CustomerFactory.getInstance().setType("jdbc"); } } catch (IOException e) { e.printStackTrace(); } } } </span>
并需要在web.xml中进行配置:
<span style="font-size:14px;"><servlet> <servlet-name>InitServlet</servlet-name> <servlet-class>com.ali.mvc.servlet.InitServlet</servlet-class> <span style="color:#ff6666;"><load-on-startup>1</load-on-startup></span> </servlet></span>
创建 CustomerServlet 时,为 customerDAO 属性赋值是通过CustomerDAOFactory 的 getCustomerDAO() 方法完成的。此时的 type 已经在 InitServlet 中被赋值了。
<span style="font-size:14px;">public class CustomerServlet extends HttpServlet { // private CustomerDao customerDao = new CustomerDaoXmlImp(); // private CustomerDao customerDao = new CustomerDaoJdbcImp(); <span style="color:#ff0000;">private CustomerDao customerDao = CustomerFactory.getInstance() .getCustomerDao();</span> } </span>
CustomerFactory.java如下:
<span style="font-size:14px;">package com.ali.mvc.dao.factory; import java.util.HashMap; import java.util.Map; import com.ali.mvc.dao.CustomerDao; import com.ali.mvc.dao.impl.CustomerDaoJdbcImp; import com.ali.mvc.dao.impl.CustomerDaoXmlImp; public class CustomerFactory { private String type = null; private Map<String, CustomerDao> daos = new HashMap<String, CustomerDao>(); <span style="color:#ff6600;">private CustomerFactory() { daos.put("jdbc", new CustomerDaoJdbcImp()); daos.put("xml", new CustomerDaoXmlImp()); } public CustomerDao getCustomerDao() { return daos.get(type); }</span> private static CustomerFactory instance = new CustomerFactory(); public static CustomerFactory getInstance() { return instance; } public void setType(String type) { this.type = type; } }</span>
相关文章推荐
- 如何用Java类配置Spring MVC(不通过web.xml和XML方式)
- JavaWeb项目通过灵活配置数据源使项目部署更加便捷
- java通过web配置监听启动定时任务
- JavaWeb基础 通过配置web.xml 让servlet类和tomcat共同启动
- Java Web中通过配置Tomcat去掉JSP生成的空行
- SpringMVC如何用Java类配置(不通过web.xml和XML方式)
- JavaWeb-Maven Profile 切换注册中心连接配置
- 如何用Java类配置Spring MVC(不通过web.xml和XML方式)
- SpringMVC如何用Java类配置(不通过web.xml和XML方式)
- Java Web中通过配置Tomcat去掉JSP生成的空行
- lighttpd 配置 Java web服务器
- java中读取配置文件的方法和数据库底层的编写
- 通过继承ConfigurationSection,在web.config中增加自定义配置
- 快速配置你的Java程序到JAWS(Java Web Start)(1)
- 通过配置web.config发电子邮件详解
- zz[Java基础]关于web.xml配置的详细说明
- 个人收藏Lotuser进阶系列(转)——通过 Lotus Domino Java 代理消费 Web 服务
- web.xml配置文件的dtd(http://java.sun.com/dtd/web-app_2_3.dtd)
- 使用 XML 通过 Java 类定义 Web服务
- Java Web中的分页显示——通过界面实现