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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值