spingmvc浅尝之一:小试牛刀

      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;

@Controller
public 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

技术分享


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。