【framework】spring3-入

发布时间:2019-09-23 17:03:07编辑:auto阅读(1654)

    补充:我把相关jar包上传到 http://down.51cto.com/data/477540
     

    spring3发布有相当长一段时间了,因为待业在家,一直帮朋友提供些方案,没有太多关注。近期打算翻译一下spring-reference,发现网上已经存在一些版本了,为了不重复发明轮子,我就弄个个实际例子来写写。

    集成

    做java的都好喜欢eclipse,没办法,虽然其他语言的程序员一直批判java程序员没有IDE就没法做开发,批判就批判吧,确实好用,好歹也带动了经济。

    我用的是工具如下: 

    IDE: eclipse3.6
    中间件(应用服务器): tomcat7.0.27
    svn: subversive
    maven: 3.0.4
    framework: springMVC 3.05

     我喜欢eclipse3.6以后的版本,因为他装插件的时候直接搜索就OK,搜索完成后,已经帮你检测出是否已经安装,可以更新。很方便

     1.集成svn

    svn在eclipse上官方推荐的是subversive,但不代表其他就不好。

    点击:help-->eclipse marketplace 

    Magical Snap - 2012.08.13 10.52 - 001

     2. 集成maven

    同样在搜索栏里maven

    install Maven Integration for Eclipse WTP 

    3. spring提供svn地址下载一些项目demo,地址如下 

    https://anonsvn.springframework.org/svn/spring-samples

    在这个地址里下载spring的mvc-basic等项目

    4. 一起看下mvc-basic的结构

    典型的maven的结构

    ├─.settings
    ├─src
    │  ├─main
    │  │  ├─java
    │  │  │  └─org
    │  │  │      └─springframework
    │  │  │          └─samples
    │  │  │              └─mvc
    │  │  │                  └─basic
    │  │  │                      └─account
    │  │  ├─resources
    │  │  └─webapp
    │  │      ├─resources
    │  │      │  └─blueprint
    │  │      │      ├─plugins
    │  │      │      │  ├─buttons
    │  │      │      │  │  └─icons
    │  │      │      │  ├─fancy-type
    │  │      │      │  ├─link-icons
    │  │      │      │  │  └─icons
    │  │      │      │  └─rtl
    │  │      │      └─src
    │  │      └─WEB-INF
    │  │          ├─classes
    │  │          ├─layouts
    │  │          ├─lib
    │  │          ├─messages
    │  │          ├─spring
    │  │          │  └─appServlet
    │  │          └─views
    │  │              └─account
    │  └─test

    --------pom.xml 

    这里我单独画出pom.xml目的主要是因为maven项目的核心文件就是pom.xml,这里有他所有的依赖和相关组件 

    5. 通过eclipse,右键pom.xml—>Run As—>maven install

    maven会自动下载相关的依赖jar包(网速不好的话,会比较尴尬)。我回头把相关包传上去,maven服务器经常出现无法下载的和jar下载不全的情况。偏偏spring官网下载的相关包里没有spring-webmvc-3.0.5.RELEASE.jar等

    注:maven可以发布war到本地或者远程tomcat下,这里不细讲 

    6. 简单走一遍流程 

    6.1 看web.xml

    1. <servlet>   
    2.         <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> 
    3.  
    4. <!--集成spring,核心调度DispatcherServlet -->   
    5.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>   
    6.         <init-param>   
    7.             <param-name>contextConfigLocation</param-name>   
    8.             <param-value>  
    9. <!--加载spring自己的配置文件-->   
    10.                 /WEB-INF/spring/appServlet/servlet-context.xml   
    11.             </param-value>   
    12.         </init-param>   
    13.         <load-on-startup>1</load-on-startup>   
    14.     </servlet>    
    15.     <servlet-mapping>   
    16.         <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>   
    17.         <url-pattern>/</url-pattern>   
    18.     </servlet-mapping>  

    6.2 查看/WEB-INF/spring/appServlet/servlet-context.xml 

    1. <!--加载控制器(原注释) 复制黏贴处问题了,看来看的人真不多。。–> 
    2. <!--非spring注解,所需的注解驱动加载 2012-9-1修改-->
    3. <mvc:annotation-driven />   
    1. <!--跟目录访问,默认访问welcome.jsp--> 
    2. <mvc:view-controller path="/" view-name="welcome"/> 
    1. <!-- jsp在WEB-INF在受到保护,不被外界直接访问,是一种比较常见的安全策略,同时定定义了jsp的地址和扩展名-->   
    2.     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">   
    3.         <property name="prefix" value="/WEB-INF/views/"/>   
    4.         <property name="suffix" value=".jsp"/>   
    5.     </bean> 

    6.3 查看控制器

    1. @Controller   
    2. @RequestMapping(value="/account")   
    3. public class AccountController {   
    4.  
    5.     private Map<Long, Account> accounts = new ConcurrentHashMap<Long, Account>();   
    6. /**  
    7.  
    8. * 如果是account的get请求,走getCreateForm  
    9.  
    10. */      
    11.  
    12. @RequestMapping(method=RequestMethod.GET)   
    13.     public String getCreateForm(Model model) {   
    14.         model.addAttribute(new Account());   
    15.         return "account/createForm";   
    16.     }  
    17.  
    18. /**  
    19.  
    20. * 如果是account的post  
    21.  
    22. */   
    23.     @RequestMapping(method=RequestMethod.POST)   
    24.     public String create(@Valid Account account, BindingResult result) {   
    25.         if (result.hasErrors()) {   
    26.             return "account/createForm";   
    27.         }   
    28.         this.accounts.put(account.assignId(), account);  
    29.  
    30.         //实际上这里跳转到了getView方法   
    31.         return "redirect:/account/" + account.getId();   
    32.     }  
    33.  
    34. /**  
    35.  
    36. *  跳转到页面view  
    37.  
    38. */   
    39.     @RequestMapping(value="{id}"method=RequestMethod.GET)   
    40.     public String getView(@PathVariable Long id, Model model) {   
    41.         Account account = this.accounts.get(id);   
    42.         if (account == null) {   
    43.             throw new ResourceNotFoundException(id);   
    44.         }   
    45.         model.addAttribute(account);   
    46.         return "account/view";   
    47.     }   
    48.  
    49. }  
    50.  

    6.4 启动项目,地址栏输入http://localhost:8080/mvc-basic/

    我们得到的刚好是welcome.jsp页面内容

    Magical Snap - 2012.08.13 11.57 - 004

    6.5 点击@Controller Example,查看createForm.jsp 由getCreateForm方法跳转的页面

    1. <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 
    2.  
    3. 这是spring的标签,用在  
    4.  
    5. <form:label    for="name" path="name" cssErrorClass="error">Name</form:label> 
    6.  
    7. <form:input path="name" /> <form:errors path="name" />      

    看看页面效果

    Magical Snap - 2012.08.13 11.54 - 003

     

    7. 为 了调试方便,可以在eclipse下运行tomcat,debug跟踪一下springMVC的流程。

     好了,一个简单的springMVC入门小例子讲解到这里,要想深入了解,可以从

    https://anonsvn.springframework.org/svn/spring-samples下载其他例子一一尝试,或者关注笔者。

关键字