spingmvc浅尝之一:小试牛刀

来源:互联网 发布:小米快传 mac 编辑:程序博客网 时间:2024/05/17 20:47

      Spring MVC是当前最优秀的MVC框架,自从Spring 2.5版本发布后,由于支持注解配置,易用性有了大幅度的提高。Spring 3.0更加完善,实现了对Struts 2的超越。现在越来越多的开发团队选择了Spring MVC。

 

       Struts2也是非常优秀的MVC构架,优点非常多比如良好的结构,拦截器的思想,丰富的功能。但这里想说的是缺点,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降,应避免使用这些功能。而Struts2的多层拦截器、多实例action性能都很好。


     Spring的官方下载网址是:http://www.springsource.org/download

        Eclipse 下载地址  http://yunpan.cn/Q7ws623WhxEZg  提取码 ca2c   

    小马哥说过,最好的学习方法就是活学活用,所以先配置一个小项目感受一下。

     1)新建一个web project,这里我用的是Eclipse。

    

     导入相关包

   

     2)配置web.xml

   <?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_2_5.xsd"     id="WebApp_ID" version="2.5">    <!-- web.xml 的加载顺序是:context-param - listener - filter - servlet ,而同个类型之间的实际程序调用的时候的顺序是根据对应的 mapping 的顺序进行调用的 -->         <listener>  <listener-class>org.springframework.web.context.ContextLoaderListener </listener-class>  </listener>              <!-- 使用ContextLoaderListener配置时,需要告诉它Spring配置文件的位置 --> <!-- 如果没有指定,上下文载入器会在/WEB-INF/applicationContext.xml中找Spring配置文件 --> <!-- 我们可以通过在Servlet上下文中设置contextConfigLocation参数,来为上下文载入器指定一个或多个Spring配置文件 --> <!-- 注意:contextConfigLocation参数是一个用逗号分隔的路径列表,其路径是相对于Web系统的根路径的 --><!-- SpringMVC的前端控制器 -->    <!-- 当DispatcherServlet载入后,它将从一个XML文件中载入Spring的应用上下文,该XML文件的名字取决于<servlet-name> -->  <!-- 这里DispatcherServlet将试图从一个叫做springmvc-servlet.xml的文件中载入应用上下文,其默认位于WEB-INF目录下 -->     <!-- 所以ContextLoaderListener参数值也可写成<param-value>classpath:applicationContext-*.xml</param-value> -->  <servlet>          <servlet-name>springMVC</servlet-name>          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>       <load-on-startup>1</load-on-startup>   </servlet>    <servlet-mapping>             <servlet-name>springMVC</servlet-name>              <url-pattern>/</url-pattern>     </servlet-mapping>  <!-- 解决编码问题-->  <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> <pre>        <param-name>forceEncoding</param-name>            <param-value>true</param-value>         </init-param>    </filter>    <!-- encoding filter for jsp page -->    <filter-mapping>             <filter-name>encodingFilter</filter-name>          <url-pattern>/*</url-pattern>    </filter-mapping> <!-- 通过错误码来配置error-page ,配置了当系统发生404错误时,跳转到错误处理页面NotFound.--><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>

其次是springmvc-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-3.1.xsd">        <!-- 启动扫描所有的controller -->    <context:component-scan base-package="com.test.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>
   3)核心控制器 UserController
package com.tgb.web.controller.annotation;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.servlet.ModelAndView;@Controllerpublic class UserController {@RequestMapping(value="/user/addUser",method=RequestMethod.POST)public ModelAndView addUser(){String result = "this is addUser-----";return new ModelAndView("/jquery","result",result);}@RequestMapping(value="/user/delUser",method=RequestMethod.GET)public ModelAndView delUser(){String result = "this is delUser";return new ModelAndView("/jquery","result",result);}@RequestMapping(value="/user/toUser",method=RequestMethod.GET)public ModelAndView toUser(){return new ModelAndView("/jquery");}<ol class="dp-j" start="1"><li class="alt"><span><span class="comment">        //ModelAndView类在SpringMVC中是一个很重要的概念      //控制器执行方法都必须返回一个ModelAndView,ModelAndView对象保存了视图以及视图显示的模型数据       //第一个参数:视图组件的逻辑名称。这里视图的逻辑名称是userlist,视图解析器会使用该名称查找实际的View对象//第二个参数:传递给视图的,模型对象的名称</span><span>  </span></span></li><li class="alt">//第三个参数:传递给视图的,模型对象的值   }

jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><script type="text/javascript" src="../js/jquery-1.7.1.min.js"></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><!-- <script type="text/javascript">$(document).ready(function(){alert(11);});</script> --></head><body><h>jquery请求</h><form action="/springmvc01/user/addUser" method="post"><input type="submit" value="post request" ></form><br><div>${result }</div></body></html>
四、配置tomcat 启动,并访问localhost

http://localhost:8080/springmvc01/user/addUser



0 0
原创粉丝点击