一个很简单的SpringMVC示例,注意,很简单,仅具演示作用。
用eclipse建立一个dynamic web project,加入相应包,Servlet的版本使用3.0,比较简单,不过多介绍。项目的文件结构如下图所示:
下面介绍一下文件内容。
1. web.xml
主要是配置了Spring的Servlet,指定其处理*.do的请求,注意Servlet的名称为spring,收到相应的请求后,会使用[ServletName]-servlet.xml解析对应的请求,也就是sping-servlet.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_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>SpringMVC</display-name> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.do</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> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
2. spring-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 这个包里的所有Controller都扫描 --> <context:component-scan base-package="com.wallimn.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="/WEB-INF/view/" /> <property name="suffix" value=".jsp" /> </bean> </beans>
3. user/show.jsp
显示用户的信息
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>显示用户信息</title> </head> <body> <h3 style="text-align:center;border-bottom:1px solid gray;">用户信息</h3> <div style="text-align:center"> 用户ID:${user.id } <br> 用户名:${user.name} <br> 密 码:${user.password} </div> </body> </html>
4. user/register.jsp
用户注册信息输入页面
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>显示用户信息</title> </head> <body> <h3 style="text-align:center;border-bottom:1px solid gray;">用户注册</h3> <div style="text-align:center"> <form action="register.do" method="post"> 用户名:<input type="text" name="name"> <br> 密 码:<input type="password" name="password"> <br> <input type="submit" value="提交"> </form> </div> </body> </html>
4. UserController.java
package com.wallimn.controller; import java.util.HashMap; import java.util.Map; import java.util.UUID; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; @Controller @RequestMapping("/user") /** * * @author http://wallimn.iteye.com * */ public class UserController { /** * 显示指定的用户信息 * @param userId * @return */ @RequestMapping("/show/{userId}") public ModelAndView show(@PathVariable String userId){ Map<String,Object> user = new HashMap<String,Object>(); user.put("id", userId); user.put("name", "wallimn"); user.put("password", "password"); return new ModelAndView("user/show","user",user); } /** * 显示用户注册界面 * @param name * @param password * @return */ @RequestMapping(value="/register",method = RequestMethod.GET) public String register_get(String name,String password){ return "user/register"; } /** * 用户注册处理 * @param name * @param password * @return */ @RequestMapping(value="/register",method = RequestMethod.POST) public ModelAndView register_post(String name,String password){ Map<String,Object> user = new HashMap<String,Object>(); user.put("id", UUID.randomUUID().toString()); user.put("name", name); user.put("password", password); return new ModelAndView("user/show","user",user); } }
5. index.jsp
欢迎页面,显示两个链接,方便查看效果
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>SpringMVC首页</title> </head> <body> <h3 style="text-align:center;border-bottom:1px solid gray;">请点击以下链接</h3> <div style="text-align:center"> <a href="user/show/1.do">查看用户信息</a> <a href="user/register.do">用户注册</a> </div> </body> </html>