阿里零售通拍档收入:Spring及应用(6)

来源:百度文库 编辑:中财网 时间:2024/05/01 12:29:11

Spring及应用(6)  

2009-03-25 23:02:56|  分类: Java 编程 |  标签: |字号大中小 订阅

***************************
Spring的常用工具类
**************************
1、org.springframework.beans.support.PagedListHolder类:
用来作分页功能,只要创建一个PagedListHodler类的实例,并将一个要进行分页管理的List设置给它的source属性(通过调用它的setSource(List)方法,或者在构造函数中传递这个List),就可以进行分页管理了。例如:
public class AddItemToCartController implements Controller {
 ...
 public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
  ...
  return new ModelAndView("Cart", "cart", cart); //第一个参数是视图名字,第二个参数是模型名字,第三个参数是模型实例。模型名字在视图文件中用来获取模型数据时使用的。
 }

}

public class Cart implements Serializable {
  ...
  private final PagedListHolder itemList = new PagedListHolder();
  public Cart() {
 this.itemList.setPageSize(4);
  }
  public PagedListHolder getCartItemList() { return itemList; }
  public void addItem(Item item, boolean isInStock) {
    CartItem cartItem = (CartItem) itemMap.get(item.getItemId());
    if (cartItem == null) {
      cartItem = new CartItem();
      cartItem.setItem(item);
      cartItem.setQuantity(0);
      cartItem.setInStock(isInStock);
      itemMap.put(item.getItemId(), cartItem);
      itemList.getSource().add(cartItem);
    }
    ...
  }
}

Cart.jsp文件的相应内容如下:



 ">
     
   

 



    "><< Prev


    ">Next >>

PagedListHolder类提供了功能强大的分页功能,具体方法看源码。

2、org.springframework.web.servlet.mvc.ParameterizableViewController类:
这是个非常简单的控制器,它接收请求,然后返回由viewName属性指定的视图,就没有任何其它操作了。对于Web应用中那些简单的页面请求(不需要作任何处理,只需要直接返回一个简单的页面)
的情况,这个类是个很好的选择,使用它只需要在控制器配置文件声明它并将它与相应的URL对应起来就可以了,例如:

 
 
 



 

 

3、上传文件:
比较常见的文件上传组件有Commons FileUpload(http://jakarta.apache.org/commons/fileupload/a>)和COS FileUpload(http://www.servlets.com/cos),Spring已经完全集成了这两种组件,
这里我们选择Commons FileUpload。
由于Post一个包含文件上传的Form会以multipart/form-data请求发送给服务器,必须明确告诉DispatcherServlet如何处理MultipartRequest。首先在-servlet.xml中声明一个MultipartResolver:
       class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
       
       
        1048576
   


这样一旦某个Request是一个MultipartRequest,它就会首先被MultipartResolver处理,然后再转发相应的Controller,在这个Controller中,将HttpServletRequest转型为MultipartHttpServletRequest,就能非常
方便地得到文件名和文件内容:
...
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
    // 转型为MultipartHttpRequest:
    MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
    // 获得文件:
    MultipartFile file = multipartRequest.getFile("file");
    // 获得文件名:
    String filename = file.getOriginalFilename();
    // 获得输入流:
    InputStream input = file.getInputStream();
    // 写入文件...
   
   
    //或者:
    //File source = new File(localfileName.toString());
    //multipartFile.transferTo(source);
}
...

 

 ********************************
Spring的配置
********************************
1、在WEB-INF/web.xml中配置以下信息:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



 Spring JPetStore
 Spring JPetStore sample application
 
 
  log4jConfigLocation
  /WEB-INF/log4j.properties
 

 
  org.springframework.web.util.Log4jConfigListener
 

 
 
  contextConfigLocation
  
   /WEB-INF/dataAccessContext-local.xml  /WEB-INF/applicationContext.xml
  

 

 
  org.springframework.web.context.ContextLoaderListener
 

 
 
  petstore
  org.springframework.web.servlet.DispatcherServlet
  2
 

 
  petstore
  *.do
 

 
 
  index.html
 


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/WEB-INF/log4j.properties是Log4J的配置文件
/WEB-INF/applicationContext.xml和/WEB-INF/dataAccessContext-local.xml是Spring的IoC功能的配置文件,一般用前者配置业务对象(包括PropertyPlaceholderConfigurer),后者配置数据源、DAO对象和声明式事务管理。
-servlet.xml是Spring MVC的声明部分,配置控制器、视图解析器、拦截器等

2、在WEB-INF/lib目录中放入相关的包,例如:spring.jar等