Spring Mvc 教程框架实例以及系统演示下载

      今天coding云为大家带来spring mvc框架的实例教程,该教程没有复杂的内容,不需要了解spring mvc的运行机制,就可以搭建好框架,继而进行快速开发,以此来体会spring mvc框架的简单、易用、方便以及安全的各种特性。事先说明,本文没有过多的理论内容,但是当您搭建好这套框架,慢慢的就能体会到其中包含的理论知识了哦。

      配置文件我都为大家准备好了,而且有源码包可以下载。这样就能方便您的快速学习,等您在自己的机器搭建好该项目,跑起来本文提供的简单例子后,您可以看看我们的源码,注释都很详细,通过例子去理解这些配置,这样就能帮助您快速理解spring mvc的一些运行机制,从而掌握这套优秀的框架。

      顺便告诉大家一声,coding云就是建立在该例子之上的哦,期待您也能成长为拥有类似coding云这样站点的大牛哦。ok,下面开始着手搭建框架。


一、准备eclipse开发环境

      eclipse是java程序员必备的开发环境,如果您还在用MyEclipse的话,我只能强烈建议您开始使用eclipse,作为一个java程序员,如果没有用过eclipse的话,那就不是一个合格的java程序员,具体原因请百度。

      我为大家准备的是eclipse4.3版本,只安装了常用的插件,比如svn版本控制以及maven等,完全从官方的最初版本安装插件后的版本。大家可以到我的网盘下载,下面是免费共享链接:


http://yunpan.cn/Q7ws623WhxEZg  提取码 ca2c


至于jdk的环境变量等(java程序员必须懂),请自行google、百度。


二、eclipse下新建项目


1.  打开eclipse后,点击【File】--》【new】,弹出窗口,选择【web】--》【Dynamic Web project】


2. 一路next,在新打开的窗口,输入项目名称,本例中输入的是codingyun-demo,继续点击next,最后点击finish,项目列表中就能看到我们的新项目codingyun-demo了.


3. 导入spring mvc相关的jar包到lib下

首先下载jar包,我已经把相关jar包都准备好了,大家可以到网盘直接下载:

http://yunpan.cn/Q7wyWjWYfW5Wq  提取码 d2c4

解压缩后,将所有jar包放到项目的【WebContent】目录下的【WEB-INF】目录下的lib目录下,直接复制粘贴进去就ok


4.配置项目引用刚才导入到lib下的jar包

右键点击项目名,在菜单中选择【Build Path】--》【Configuration Build Path...】


三、新增spring mvc的配置文件

找到项目目录下的【Java Resources】,右键点击【Java Resources】,在弹出窗口选择【new】--》【Source folder】,

source folder建好之后,需要把配置文件复制粘贴进去,如下图:

这四个文件分别是:

database.properties:配置数据库连接的地址,用户名以及密码

jdbc-context.xml:spring mvc的jdbc连接数据库的bean的配置

springMvc3-servlet.xml:spring mvc的其他配置(非常重要)

log4j.properties:控制台打印日志的配置、输出日志文件的配置


1. database.properties的配置:注意替换shujuku_name为你的数据库名称,还有用户名、密码

1
2
3
4
mysql.driverclass=com.mysql.jdbc.Driver
mysql.jdbcurl=jdbc:mysql: //127.0.0.1:3306/shujuku_name?autoReconnect=true&useUnicode=true&characterEncoding=utf8
mysql.user=root
mysql.password=abc123

2. jdbc-context.xml的配置:暂时未加事务控制等配置,本次实例为了简单一些。如有需要,请百度或者给我留言,我会补充上来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?xml version= "1.0" encoding= "UTF-8" ?>
     xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"  
     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.1.xsd  
           http: //www.springframework.org/schema/tx  
           http: //www.springframework.org/schema/tx/spring-tx-3.1.xsd 
           http: //www.springframework.org/schema/context  
           http: //www.springframework.org/schema/context/spring-context-3.1.xsd  
           http: //www.springframework.org/schema/aop  
           http: //www.springframework.org/schema/aop/spring-aop-3.1.xsd" default-autowire="byName">
           
         <!-- 创建数据源   commons-dbcp.jar;     commons-pool.jar包-->
      <context:property-placeholder location= "classpath:database.properties" />
      <bean id= "dataSource" destroy-method= "close" class = "org.apache.commons.dbcp.BasicDataSource" >
         <property name= "driverClassName" value= "${mysql.driverclass}" />
         <property name= "url" value= "${mysql.jdbcurl}" />
         <property name= "username" value= "${mysql.user}" />
         <property name= "password" value= "${mysql.password}" />
      </bean>
 
      <bean id= "simpleJdbcTemplate" class = "org.springframework.jdbc.core.simple.SimpleJdbcTemplate" >
         <constructor-arg><ref bean= "dataSource" /></constructor-arg>
      </bean>
     
      <!-- 看了spring源码,该 org.springframework.jdbc.core.JdbcTemplate类的继承类有dataSource属性,所以可以属性注入-->
      <bean id= "jdbcTemplate" class = "org.springframework.jdbc.core.JdbcTemplate" >
          <property name= "dataSource" >
              <ref bean= "dataSource" />
          </property>
      </bean>
      
</beans>

3. springMvc3-servlet.xml的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?xml version= "1.0" encoding= "UTF-8" ?>
     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.1.xsd  
            http: //www.springframework.org/schema/context  
            http: //www.springframework.org/schema/context/spring-context-3.1.xsd 
            http: //www.springframework.org/schema/mvc  
            http: //www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
     
     <!-- 启动扫描所有的controller -->
     <context:component-scan base- package = "com.codingyun.core.action" />
     
     <!--  主要作用于 @Controller ,激活该模式
         
         下面是一种简写形式,完全可以手动配置替代这种简写形式;
          它会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,
            是spring MVC为 @Controllers 分发请求所必须的
      -->
<!--     <mvc:annotation-driven/> -->
     <mvc:annotation-driven>
         <mvc:message-converters register-defaults= "true" >
             <bean class = "org.springframework.http.converter.StringHttpMessageConverter" >
                 <constructor-arg value= "UTF-8" />
             </bean>
         </mvc:message-converters>
     </mvc:annotation-driven>
     
   
     <!-- 配置js,css等静态文件直接映射到对应的文件夹,不被DispatcherServlet处理 -->
     <mvc:resources location= "/WEB-INF/resources/**" mapping= "/resources" />
     <mvc:resources mapping= "/javascript/**" location= "/static_resources/javascript/" /> 
     <mvc:resources mapping= "/styles/**" location= "/static/css/" /> 
     <mvc:resources mapping= "/images/**" location= "/static/images/" />
     
     <!-- 配置页面访问地址www.xxx.com/about返回的静态html文件 -->
     <mvc:resources mapping= "/about/**" location= "/WEB-INF/html/" />
     <!-- 走servlet的默认配置,先走默认的web.xml配置的servlet,没有的话才找对应controller -->
     <mvc: default -servlet-handler />
     
     <!-- jsp页面解析器,当Controller返回XXX字符串时,先通过拦截器,然后该类就会在jsp/目录下,查找XXX.jsp文件-->
     <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver" >
         <property name= "prefix" value= "/WEB-INF/jsp/" ></property>
         <property name= "suffix" value= ".jsp" ></property>
     </bean>
     
     <bean id= "multipartResolver"
         class = "org.springframework.web.multipart.commons.CommonsMultipartResolver" >
         <property name= "defaultEncoding" >
             <value>UTF- 8 </value>
         </property>
         <property name= "maxUploadSize" >
             <value> 32505856 </value><!-- 上传文件大小限制为31M, 31 * 1024 * 1024 -->
         </property>
         <property name= "maxInMemorySize" >
             <value> 4096 </value>
         </property>
     </bean>
     
</beans>

4. log4j.properties的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
log4j.rootLogger=INFO,console,R
 
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n
log4j.appender.console.threshold=INFO
 
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n
log4j.appender.R.File=/alidata/zkyj/web/zkyj-web.log
log4j.appender.R.Append= true
log4j.appender.R.Threshold=INFO
log4j.appender.R.MaxFileSize=20MB
log4j.appender.LOGFILE.MaxBackupIndex= 100
log4j.org.springframework.web=INFO


四、配置web.xml,以及新建jsp、css、js等目录

依照上图,新建目录,以及web.xml文件

web.xml的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?xml version= "1.0" encoding= "UTF-8" ?>
     xsi:schemaLocation= "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id= "WebApp_ID" version= "3.0" >
     <display-name>zkyj-web</display-name>
     
     <!-- web.xml 的加载顺序是:context-param -> listener -> filter -> servlet ,
     而同个类型之间的实际程序调用的时候的顺序是根据对应的 mapping 的顺序进行调用的 -->
     
     <!-- spring上下文载入监听器,确保web服务启动时,spring已经完成初始化 -->
     <listener>
         <listener- class >org.springframework.web.context.ContextLoaderListener</listener- class >
     </listener>
     
     <context-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>classpath:jdbc-context.xml</param-value>
     </context-param> 
     
     <filter>
         <filter-name>encodingFilter</filter-name>
         <filter- class >org.springframework.web.filter.CharacterEncodingFilter</filter- class >
         <init-param>
             <param-name>encoding</param-name>
             <param-value>UTF- 8 </param-value>
         </init-param>
         <init-param>
             <param-name>ForceEncoding</param-name>
             <param-value> true </param-value>
         </init-param>
     </filter>
   
     <filter-mapping>
         <filter-name>encodingFilter</filter-name>
         <url-pattern>/*</url-pattern>
     </filter-mapping>
 
     <servlet>
         <servlet-name>springMvc3</servlet-name>
         <servlet- class >org.springframework.web.servlet.DispatcherServlet</servlet- class >
         <init-param>
             <param-name>contextConfigLocation</param-name>
             <param-value>classpath:springMvc3-servlet.xml</param-value>
         </init-param>
         <load-on-startup> 1 </load-on-startup>
     </servlet>
   
     <!-- 会话超时配置(单位为分钟) -->
     <session-config>
         <session-timeout> 120 </session-timeout>
     </session-config>
   
   
     <servlet-mapping>    
         <servlet-name> default </servlet-name>   
         <url-pattern>*.jpg</url-pattern>      
     </servlet-mapping>     
     <servlet-mapping>        
         <servlet-name> default </servlet-name>     
         <url-pattern>*.js</url-pattern>     
     </servlet-mapping>     
     <servlet-mapping>         
         <servlet-name> default </servlet-name>        
         <url-pattern>*.css</url-pattern>       
     </servlet-mapping>  
     <servlet-mapping>
         <servlet-name>springMvc3</servlet-name>
         <url-pattern>/</url-pattern>
     </servlet-mapping>           
     <welcome-file-list>
         <welcome-file>index.html</welcome-file>
     </welcome-file-list>
   
     <!-- 通过错误码来配置error-page ,配置了当系统发生 404 错误时,跳转到错误处理页面NotFound.jsp。 -->
     <error-page>
         <error-code> 404 </error-code>
         <location>/page404.html</location>
     </error-page>
     <!--  通过异常的类型配置error-page ,配置了当系统发生java.lang.NullException(即空指针异常)时,跳转到错误处理页面error.jsp  -->
     <error-page>
         <exception-type>java.lang.NullPointerException</exception-type>
         <location>/WEB-INF/jsp/error.jsp</location>
     </error-page>
   
</web-app>

五、新建controller,接收页面请求,返回相应的页面

在项目的src目录下新建包com.codingyun.core.action

在该包下新建indexController.java

indexController.java内容:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.codingyun.core.action;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
 
@Controller
public class IndexController{
     
     /**
      * 进入demo首页
      * @user jack
      * 2014年9月4日
      */
     @RequestMapping (value = "" , method = RequestMethod.GET)
     public String index(HttpServletRequest request){
         //对应的是WebContent目录下的WEB-INF目录下的jsp目录下的demo下的index.jsp
         //请查看配置文件springMvc3-servlet.xml仔细体会一下
         return "demo/index" ;  
     }
 
}

六、配置tomcat,启动tomcat后,测试访问localhost

http://localhost:8080/codingYun-Demo/ 访问成功,则说明项目搭建成功。


七、框架源码下载

这次的spring mvc框架实例,我为大家无偿共享到我的云盘了,如有需要,请自行下载。

最后补充一句,有任何问题,您都可以在本页评论处留言,我会尽快为您解答。

1
http: //yunpan.cn/Q7cPpVKAqNN4E  提取码 2fde


******************2014年10月10日18:30:10更新*************

coding云的粉丝们,福利来了。spring Mvc 框架实例进阶篇已经为大家提供了哦,包含了coding云的主页、登录功能、验证码功能,而且页面集成了bootstrap前端框架哦,大家快快来下载项目源码吧。

传送门:spring Mvc 框架实例进阶篇--登录功能源码下载

******************2014年10月10日18:30:10更新*************

如果帮到您的话,请为本文点赞、同时分享给您的好友圈。

转自:http://www.codingyun.com/article/47.html

(转载本站原创文章请注明作者与出处Coding云--codingyun.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值