`
leaya00
  • 浏览: 65223 次
  • 性别: Icon_minigender_1
  • 来自: 北京->重庆
文章分类
社区版块
存档分类
最新评论

spring3 mvc 心得

阅读更多
看eyes里面这么热烈的讨论这个框架,忍不住犯了老毛病。花了几天看了看开发手册,尝试写了写demo。
spring框架设计的比较精巧,使用起来上手会让人耳目一新(当然指被ssh折磨的人,比rails、django还差很多)。
拿他只当做mvc的c,很好。这个框架可以好好在项目里面用用了。

自己感觉不太适合新手去学习。
1、中文文档或者教程太少,基本能找到的都是些类似我这种尝试性的一些小例子
2、uri映射、注释设置会让新手迷迷糊糊。
3、很多插件都不是特别完备,但因为是开源的,自己集成点也不困难,但对新手感觉功能太少。
因为spring的文档就那一个,我看了好久,感觉从这章入手比较好
15.3.2.3 Supported handler method arguments and return types 
自己感觉web框架比较常用的功能就是获得参数-渲染页面,所以这节讲的很全。
自己学习的demo
c
package com.web;

import java.io.FileInputStream;
import java.io.OutputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class Index {
	@RequestMapping(value = "/index",method=RequestMethod.GET)
	public ModelAndView getContent_GET(
			@RequestParam(value = "message", required = false) String message)
			throws Exception {
		ModelAndView mav = new ModelAndView();
		mav.setViewName("index");
		if (message != null) {
			message = new String(message.getBytes("8859_1"), "UTF-8");
		}
		mav.addObject("message", message);

		return mav;
	}
	@RequestMapping(value = "/index",method=RequestMethod.POST)
	public ModelAndView getContent_POST(
			@RequestParam(value = "message", required = false) String param)
			throws Exception {
		ModelAndView mav = new ModelAndView();
		mav.setViewName("index");		
		mav.addObject("message1", param);

		return mav;
	}
	//15.3.2.3 Supported handler method arguments and return types
	@RequestMapping(value="/m1")
	public ModelAndView m1(@RequestHeader(value="Accept")String header, HttpServletRequest request,HttpServletResponse response) throws Exception{
		ModelAndView m = new ModelAndView();
		m.setViewName("m1");
		m.addObject("message","method 1"+header);
		return  m;
	}
	//输出二进制图片s
	@RequestMapping(value="/m2")
	public ModelAndView m2(HttpServletResponse response,OutputStream out) throws Exception{
		response.setContentType("image/png;charset=UTF-8");  
		//ModelAndView m = new ModelAndView();
		//m.setViewName("m1");
		FileInputStream in=new FileInputStream("F://图片//34aL_002.png");
		
		byte[] b =new byte[in.available()] ;
		//b.length=in.available();
		in.read(b);
		out.write(b);
		in.close();
		return  null;
	}
}


v
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="/WEB-INF/jsp/jstlhead.jsp" %>   
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><c:out value="${message}"></c:out> </title>
</head>
<body>
	返回:
	get:${message}
	post:${message1}
	<form action="index.cs" method="get">
		<input name="message">
		<input type="submit" value="get提交">
	</form>
	<form action="index.cs" method="post">
		<input name="message">
		<input type="submit" value="post提交">
	</form>
</body>
</html>

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>go</display-name>
	<welcome-file-list>
		<welcome-file>navigate.jsp</welcome-file>
	</welcome-file-list>
	<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>*.cs</url-pattern>
	</filter-mapping>
	
	<servlet>
		<servlet-name>example</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>example</servlet-name>
		<url-pattern>*.cs</url-pattern>
	</servlet-mapping>
	
</web-app>


example-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"
	xsi:schemaLocation="
	http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-3.0.xsd">
	<context:component-scan base-package="com.web"></context:component-scan>
	<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
		<property name="prefix" value="/WEB-INF/jsp/"/>
		<property name="suffix" value=".jsp"/>
	</bean>
	<bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
	<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
</beans>


输出数据结构和文件上传
package com.web;

import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class Ctrl {
	// 返回数据结构
	@RequestMapping(value = "/c1")
	public ModelAndView r1(HttpServletRequest request,
			HttpServletResponse response) {
		List list = new ArrayList();
		for (int i = 0; i < 10; i++) {
			list.add(i);
		}
		return new ModelAndView("c1", "list", list);
	}

	// 上传文件
	@RequestMapping(value = "/upload")
	public ModelAndView r2(@RequestParam("myDoc") MultipartFile file)
			throws Exception {
		if (!file.isEmpty()) {
			byte[] bytes = file.getBytes();
			FileOutputStream out = new FileOutputStream("c://"
					+ file.getOriginalFilename() + ".up");
			try {
				out.write(bytes);
			} finally {
				out.close();
			}
			System.out.println("run");
			// store the bytes somewhere
			return new ModelAndView("index", "message", file
					.getOriginalFilename());
		} else {
			return new ModelAndView("c1");
		}

	}
}


增加的配置
<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- one of the properties available; the maximum file size in bytes -->
		<property name="maxUploadSize" value="100000"/>
	</bean>
分享到:
评论
3 楼 leaya00 2010-12-21  
我也不是不想写明白。某些东西我也搞不懂具体是干什么用的,又懒的去读源码。
比如:org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
就知道某些配置必须加它,否则就报找不到control的错误。都是google解决的,也没人说为什么这样。估计是内部机制实现的。

ps:按字面意思是注释事件适配器。

按照我的例子,大概就可以搭出一个mvc架子了,然后填空就行了。
springmvc内部有些很好用的特性,仔细看下自带的文档。比如根据context-type,选择渲染的viewResolver。
1、2楼需要知道些什么,我尽量满足。
2 楼 frederick_hai 2010-12-12  
1楼说的对,这样的文章是写给自己看的吧,如何分享呢?怎么阅读?
1 楼 jzl_root 2010-11-19  
楼主就贴贴例子么 不讲解一下标签的吗

相关推荐

    Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)所有实验及实验报告.zip

    本教程专注于使用Spring、Spring MVC和MyBatis这三个关键组件进行实战教学。这三者构成了Java EE开发中的重要支柱,为开发者提供了强大的功能和灵活性。 Spring框架是Java EE开发的核心,它是一个全功能的容器,...

    【2018最新】spring,mvc实训报告-优秀word范文 (14页).docx

    根据给定的文件信息,以下是对Spring MVC实训报告中的关键知识点进行详细解析: ### Spring MVC 实训报告概览 #### 引言 - **现代化管理需求**:随着信息技术的快速发展和计算机的广泛应用,个人信息管理变得日益...

    spring mvc深入总结

    Spring MVC 是一款广泛使用的 Java Web 开发框架,它为构建基于模型-视图-控制器(MVC)架构的应用程序提供了一种简洁而有效的方式。Spring 3.0.5 版本的 Spring MVC 提供了丰富的特性和优化,使得开发者能够快速...

    Spring学习心得(一)

    Spring还包含了Spring MVC,这是一个用于构建Web应用程序的模块,它提供了模型-视图-控制器(MVC)架构,使得开发者可以更专注于业务逻辑,而不是底层HTTP处理。Spring MVC通过DispatcherServlet接收请求,使用...

    Spring-mvc学习心得(一)-附件资源

    Spring-mvc学习心得(一)-附件资源

    SpringMVC文档.zip_spring mvc

    5. **Spring MVC 3.x annotated controller的几点心得体会** - 作者可能分享了在实际开发中使用注解控制器的经验和技巧,包括错误处理、数据验证、模型绑定等方面。 6. **SpringMVC数据绑定** - 数据绑定是Spring...

    spring-mvc教程学习总结

    Spring MVC 是一款强大的Java Web开发框架,用于构建可维护、高性能的企业级应用程序。它作为Spring框架的一部分,专注于处理HTTP请求和响应,实现了Model-View-Controller(MVC)设计模式,使得开发人员能够将业务...

    Spring MVC总结(一)

    Spring MVC架构与DispatcherServlet配置 Spring MVC是一种流行的基于Java的Web应用框架,它提供了一个灵活的架构来开发Web应用程序。在本文中,我们将对Spring MVC的架构和DispatcherServlet的配置进行总结。 ...

    spring MVC中文教程

    - 本书还包含了许多作者在实际项目中的经验和心得,这些实践经验对于读者理解和应用Spring MVC非常有帮助。 总之,《Spring MVC中文教程》是一本非常适合初学者的指南,它不仅详细介绍了Spring MVC的核心概念和技术...

    spring mvc 官方文档

    本文详细介绍spring MVC的原理和开发心得体会。

    糗百中spring mvc jar包

    Spring MVC 是一个基于 Spring 框架的 Model-View-Controller (MVC) 模型的轻量级 Web 开发工具。它简化了在 Java 应用程序中处理 HTTP 请求和构建动态网页的过程。这个“糗百中spring mvc jar包”可能是作者为了...

    spring使用心得 java ssh

    SSH(Spring、Struts、Hibernate)是Java Web开发的经典组合,这个压缩包中包含了一些关于Spring在实际使用过程中的心得和常见问题的解决方案。 首先,"spring的事务代理.txt"可能涉及到Spring的事务管理。Spring...

    spring学习心得

    Spring还提供了丰富的模块,包括数据访问/集成层(如Spring JDBC和Hibernate支持),Web层(如MVC框架),以及Spring Boot和Spring Cloud等现代开发工具。其中,Spring MVC作为Web开发的一部分,提供了一种模型-视图...

    spring个人心得888

    Spring MVC是Spring框架的一个模块,用于构建Web应用。它提供了模型-视图-控制器架构,将业务逻辑、数据展示和用户交互分离,简化了Web开发。Spring MVC通过DispatcherServlet接收请求,处理器映射器和处理器适配器...

    ssm(spring+spring mvc+mybatis+maven)高仿bilibili视频网站项目实例.zip

    SSM(Spring + Spring MVC + MyBatis)框架作为Java开发中的黄金组合,为开发者提供了强大的技术支持和丰富的功能。本系列资料将带您从零基础开始,逐步掌握SSM的核心技术和最佳实践,助您在Java Web开发领域更上一...

    JAVA中spring介绍及心得.docx

    Spring MVC通过将应用程序分为这三个层次,提高了代码的组织性和可维护性。 ### 心得体会 1. **简化开发**:Spring框架提供的大量现成解决方案和模块可以显著简化Java企业应用的开发过程,同时提高了开发效率。 ...

    spring 数据绑定心得,适合新手

    这个“spring 数据绑定心得”课程是专为新手设计的,旨在帮助初学者快速掌握这一关键技术。让我们深入探讨一下其中涉及的知识点。 首先,简单数据类型的绑定是指将用户界面中的输入值直接映射到Java的基本数据类型...

Global site tag (gtag.js) - Google Analytics