spring-mvc框架学习(一)

从零开始搭建一个 spring 项目并发布,关于 spring 框架的特点和优势就不多写了,百度一大把,下边就记录一下如何通过spring 框架实现一个 web 项目


action:
1、首先准备工具,eclipse、maven、tomcat 、mysql、zookeeper、dubbo-admain等必要软件,安装过程略
2、使用eclipse 创建project-maven project- Maven Webapp,填写项目group_id、artifact_id,finish
 


3、maven 项目已创建完成,其中有两个地方需要调整下,jdk 需要选择我们安装的,我这边是1.7.80,公司大部分应用仍是1.7因此不太建议用最新的1.8


其中 index.jsp 下边有一个红 X 报错,如下,在 maven 的 pom 文件中引入以下包即可

< dependency >
     < groupId >javax.servlet </ groupId >
     < artifactId >javax.servlet-api </ artifactId >
     < version >3.1.0 </ version >
</ dependency >

4、至此已创建完成一个最简单的 spring 项目,其中 index.jsp 页面即首页,在 eclipse中配置tomcat7,点击运行,即可看到以下效果,浏览器访问以下地址同样可看到效果
http://localhost:8080/spring-test/


5、web 项目可正常访问了,离一个正常的可运行的工程还远,下边进行内容编写及配置,准备配置一个 url 可访问页面及一个计算页面
首先需要配置映射器,需要修改 web.xml 文件如下,其中涉及 mybatis 的配置后边用到

<?xml version="1.0" encoding="UTF-8"?>  

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

    xmlns="http://java.sun.com/xml/ns/javaee"  

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  

    version="3.0">  

    <display-name>HelloSpringMVC</display-name>

<!-- Spring监听器 -->

    <listener>

        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

    </listener>

   <!-- <context-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>classpath:spring-mybatis.xml</param-value>

    </context-param>

   -->


  <!--前端控制器 -->

    <servlet>

        <servlet-name>spring-mvc</servlet-name>  <!-- 名称,真实的文件名需要在这个名字后面加上-servlet后缀 -->

        <servlet-class>org.springframework.web.servlet.DispatcherServlet

        </servlet-class> <!--  DispatcherServlet路径,照写 -->

        <!--        这里可以设置前端控制器的路径,如果这一步注释掉,则默认前端控制器的路径为:/WEB-INF/[servlet-name]-servlet.xml    -->

            <init-param>

               <param-name>contextConfigLocation</param-name>

               <param-value>/WEB-INF/spring-mvc-servlet.xml,/WEB-INF/config/applicationContext.xml</param-value>

           </init-param>  

        <load-on-startup>1</load-on-startup>

    </servlet>

    <!-- 拦截所有请求 -->

    <servlet-mapping>

        <servlet-name>spring-mvc</servlet-name>    <!-- 这里的名字要和上面的servlet-name统一 -->

        <url-pattern>/</url-pattern>

    </servlet-mapping>


    <filter>

        <filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

</web-app> 

其中本行涉及读取另外两个文件,是对映射器格式支持的配置,在WEB-INF 文件下创建spring-mvc-servlet.xml 和 applicationContext.xml文件,两个文件内容如下,这两个文件配置了 spring 工程对请求的拦截与映射,其中所有的请求将映射至WEB-INF/view 目录下的.jsp文件或.html 文件,前台将展示此处文件

spring-mvc-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" xmlns:p="http://www.springframework.org/schema/p"  

    xmlns:context="http://www.springframework.org/schema/context"  

    xmlns:mvc="http://www.springframework.org/schema/mvc"  

    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-4.0.xsd">

    <!-- 扫描路径 -->

    <context:component-scan base-package="com.springmvc.controller"></context:component-scan>


<!--避免IE执行AJAX时,返回JSON出现下载文件-->

<bean id="mappingJackson2HttpMessageConverter"

class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">

<property name="supportedMediaTypes">

<list>

<value>text/html;charset=UTF-8</value>

</list>

</property>

</bean>

<!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->

<bean

class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

<property name="messageConverters">

<list>

<ref bean="mappingJackson2HttpMessageConverter" />

</list>

</property>

</bean>

  <!-- 配置根视图 -->

    <mvc:view-controller path="/" view-name="index"/>


    <!-- 激活基于注解的配置 @RequestMapping, @ExceptionHandler,数据绑定 ,@NumberFormat ,

    @DateTimeFormat ,@Controller ,@Valid ,@RequestBody ,@ResponseBody等  -->

    <mvc:annotation-driven/>


    <!-- 静态资源配置 -->

    <mvc:resources location="/assets/" mapping="/assets/**"></mvc:resources>


    <!-- 视图层配置 -->

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <property name="prefix" value="/WEB-INF/view/"/>

        <property name="suffix" value=".jsp"/>

        <property name="contentType" value="text/html;charset=UTF-8"/>

        <property name="order" value="1"></property>

    </bean>


    <!-- html视图解析器 必须先配置freemarkerConfig,注意html是没有prefix前缀属性的-->

    <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">

        <property name="templateLoaderPath">

            <value>/WEB-INF/view/</value>

        </property>

    </bean>

    <bean id="htmlviewResolver"

          class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">

        <property name="suffix" value=".html"/>

        <property name="order" value="0"></property>

        <property name="contentType" value="text/html;charset=UTF-8"></property>

    </bean>

</beans>

applicationContext.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-4.2.xsd">


    <bean id="freemarkerConfig"

          class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">

        <property name="templateLoaderPath" value="/WEB-INF/view/"/>

        <property name="freemarkerSettings">

            <props>

                <prop key="template_update_delay">0</prop>

                <prop key="default_encoding">UTF-8</prop>

                <prop key="number_format">0.##########</prop>

                <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>

                <prop key="classic_compatible">true</prop>

                <prop key="template_exception_handler">ignore</prop>

            </props>

        </property>

    </bean>

</beans>


相关阅读:spring-mvc框架学习(二)

spring-mvc框架学习(三)

本文来自网易实践者社区,经作者李亚松授权发布。