业务逻辑 依赖注入
框架结构图
package com.dragon.entity;
/**
* 商品类
* @author Administrator
*
*/
public class ProductInfo {
/**
* 商品描述
*/
private String description;
/**
* 价格
*/
private Double price;
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public String toString() {
StringBuffer buffer = new StringBuffer();
buffer.append("Description: " + description + ";");
buffer.append("Price: " + price);
return buffer.toString();
}
}
业务层service com.dragon.service
package com.dragon.service;
import java.util.List;
import com.dragon.entity.ProductInfo;
public interface ProductManager {
/**
* 增大价格
* @param percentage
*/
public void increasePrice(int percentage);
/**
* 获得所有的商品
* @return
*/
public List<ProductInfo> getProductInfoList();
}
业务层的实现类 serviceImpl com.dragon.service.impl
package com.dragon.service.impl;
import java.util.List;
import com.dragon.entity.ProductInfo;
import com.dragon.service.ProductManager;
public class ProductManagerImpl implements ProductManager {
/**
* 创建商品的集合
*/
private List<ProductInfo> productList;
public List<ProductInfo> getProductList() {
return productList;
}
public void setProductList(List<ProductInfo> productList) {
this.productList = productList;
}
public List<ProductInfo> getProductInfoList() {
// TODO Auto-generated method stub
return productList;
}
public void increasePrice(int percentage) {
// TODO Auto-generated method stub
if (productList != null) {
for (ProductInfo product : productList) {
double newPrice = product.getPrice().doubleValue() *
(100 + percentage)/100;
product.setPrice(newPrice);
}
}
}
}
控制器类 com.dragon.controller
package com.dragon.controller;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import com.dragon.service.ProductManager;
/**
* 存货清单控制器类
* @author Administrator
*
*/
public class InventoryController implements Controller {
private ProductManager productManager;
public ProductManager getProductManager() {
return productManager;
}
public void setProductManager(ProductManager productManager) {
this.productManager = productManager;
}
public ModelAndView handleRequest(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
// TODO Auto-generated method stub
String now = (new java.util.Date()).toString();
//创建Map对象
Map<String,Object> models = new HashMap<String,Object>();
//将数据存入map中
models.put("productList", this.productManager.getProductInfoList());
models.put("now", now);
return new ModelAndView("show", "models",models);
}
}
Springmvc配置文件 springapp-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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- the application context definition for the springapp DispatcherServlet -->
<!-- 添加一个bean入口 指定其一个类作为他的入口 -->
<bean name="/helloAction.do" class="com.dragon.controller.HelloAction">
<!-- 其中的name为 控制器类定义的变量successView value为需要访问的路径 -->
<property name="successView" value="index"></property>
</bean>
<bean id="productManager" class="com.dragon.service.impl.ProductManagerImpl">
<!-- 注入 对集合中注入对象-->
<property name="productList">
<list>
<ref bean="product1"/>
<ref bean="product2"/>
<ref bean="product3"/>
</list>
</property>
</bean>
<!--property 用来指定需要容器注入的属性 一下为设置值的注入 -->
<bean id="product1" class="com.dragon.entity.ProductInfo">
<property name="description" value="Lamp"/>
<property name="price" value="5.75"/>
</bean>
<bean id="product2" class="com.dragon.entity.ProductInfo">
<property name="description" value="Table"/>
<property name="price" value="75.25"/>
</bean>
<bean id="product3" class="com.dragon.entity.ProductInfo">
<property name="description" value="Chair"/>
<property name="price" value="22.79"/>
</bean>
<bean name="/show.do" class="com.dragon.controller.InventoryController">
<!-- 注入productManager -->
<property name="productManager" ref="productManager"></property>
</bean>
<!-- 为了减少代码量 声明一个视图解决的入口 配置view -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 提供jstl支持 -->
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<!-- 如果指定了后缀名和前缀名的时候 注入一个参数需要跳转的View地址 就不需要 书写后缀名称 系统则自动匹配-->
<!-- 前缀 -->
<property name="prefix" value="/"></property>
<!-- 后缀 -->
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 配置Springmvc -->
<!-- spring-Mvc核心控制器 -->
<servlet>
<!-- 其中的servlet-name 可以自己定义 但是如果是自己定义 创建的spring配置文件的名字必须是 (servlet-name)-servlet.xml
系统会自动加载文件名为这个的xml配置文件 否则自己就需要指定文件名称进行加载
-->
<servlet-name>springapp</servlet-name>
<!-- 核心 -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 访问的文件名是以do结尾的当然 也可以是其他的什么比如 *.jsp/*.htm /*.action ... -->
<servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
show.jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'show.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<h1></h1>
<!-- 获得当前的时间 -->
<p> <c:out value="${models.now}"/></p>
<h3>Products</h3>
<!-- 使用循环显示数据 -->
<c:forEach items="${models.productList}" var="prod">
<c:out value="${prod.description}"/> <i>$<c:out value="${prod.price}"/></i><br><br>
</c:forEach>
</body>
</html>
访问的方法
http://localhost:8080/Spring_MVC/show.do 就可以实现 其他的还在研究中