今天学习了Spring MVC3的内容,写了一些示例,由于关于Spring MVC的资料网上特别多,这里就不在赘述。
开发环境:
jdk:1.7+MyEclipse10+Spring3.0+Apache Tomcat 7.0
1.入门级
1)新建index.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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>Spring MVC3 Demo</title>
</head>
<body>
<a href="test.html">Spring MVC 示例</a>
<a href="login.do">login</a>
<a href="test.xx">test xx</a>
</body>
</html>
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">
<display-name>spring</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<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>
</web-app>
3) 配置springmvc-servlet.xml
这个文件类似于之前的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" 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" default-autowire="byName">
<context:component-scan base-package="com.wicresoft.controller" />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
4)添加HomeController
package com.wicresoft.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HomeController {
@RequestMapping("/test.html")
public ModelAndView GetMessage(){
String str = "This Spring MVC Demo Return From Server";
return new ModelAndView("message","str",str);
}
@RequestMapping("/test.xx")
public ModelAndView GetMessage2(){
String str = "test.xx return";
return new ModelAndView("message","str",str);
}
}
5) 添加Jar包
6)使用Tomcat 启动(非MyEclipse自带的)
7) 访问
点击两个链接分别返回
总结:
(1).Spring MVC 支持注解的方式完成Url和Action方法的映射,这个跟ASP.NET MVC 的属性一样的。
(2).Spring MVC 不负责根据后缀名选择如何处理,完全由程序控制。
(3).Spring MVC 通过配置的方式来约定映射规则。
2.页面传值
1)新增LoginController
package com.wicresoft.controller;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.wicresoft.model.*;
@Controller
public class LoginController {
/*
@RequestMapping("/login.do")
public ModelAndView GetMessage(){
String str = "success";
return new ModelAndView("message","str",str);
}
*/
@RequestMapping(value = "/login.do", method = RequestMethod.POST)
public ModelAndView onSubmit(HttpServletRequest request, ModelMap modelMap){
String username = request.getParameter("username");
String password = request.getParameter("password");
LoginForm form = new LoginForm();
form.setUsername(username);
form.setPassword(password);
if(username.equals("Admin")&&password.equals("12345")){
return new ModelAndView("success","username",form);
}
else{
return new ModelAndView("success","username","error");
}
}
}
登录页面
<%@ page contentType="text/html;charset=utf-8"%>
<html>
<head>
<title></title>
</head>
<body>
<form method="post" action=login.do>
<table>
<tr><td>姓名</td><td><input id="user" name="username" type="text" /></td></tr>
<tr><td>密码</td><td><input id="psw" name="password" type="text" /></td></tr>
<tr><td colSpan="2" align="center"><input type="submit" value="提交" width="180px"/></td></tr>
</table>
</form>
</body>
</html>
登录成功的页面
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'success.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<h1>final</h1>
${username.getUsername()}
</body>
</html>
登录效果
登录之后
总结:
1)在Controller中可以使用request对象获取页面输入的参数
2)controller可以返回对象给页面,并且自动序列化,在页面接收的时候,自动进行反序列化!类似ASP.NET MVC 的模型传递!
3)注解可以注解post/get方法