项目的目录结构为:
注意:我这里用的html,后有解释用jsp的用法。
1,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_3_0.xsd"
id="WebApp_ID" version="3.0">
<!-- 项目名称-->
<display-name>springmvcDemo</display-name>
<!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如spring-servlet.xml
例如下面的橙色叫springmvc就会去找springmvc-servlet.xml <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-servlet.xml</param-value> 默认 </init-param> -->
<servlet>
<servlet-name> spring </servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 访问时默认加上.do后缀。如注解 @RequestMapping(value="/register",method = RequestMethod.POST)
则访问时用成register.do
-->
<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都扫描 ,这里要和你项目里面controller所在的路径相对应,如有多个可在后面加或者使用*
-->
<context:component-scan base-package="com.test.controller" /><bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<!--
此参数是配置的默认访问web-inf里面的/WEB-INF/view/ (根据你自己的项目而定)
-->
<property name="prefix" value="/WEB-INF/view/" />
<!--
访问后缀为.html的文件,若是.jsp文件,则为:<property name="suffix" value=".jsp" />
-->
<property name="suffix" value=".html" />
</bean>
</beans>
3,UserController
package com.test.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")
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);
}
}
4,html文件
1)index.html
<!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>
2)register.html
<!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>
3,show.html
<!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>
所需jar包自己找哦
*简单介绍一下springmvc
【Spring】Spring MVC原理及配置
1.Spring MVC概述:
Spring MVC是Spring提供的一个强大而灵活的web框架。借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单。这些控制器一般不直接处理请求,而是将其委托给Spring上下文中的其他bean,通过Spring的依赖注入功能,这些bean被注入到控制器中。
Spring MVC主要由DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图组成。他的两个核心是两个核心:
处理器映射:选择使用哪个控制器来处理请求
视图解析器:选择结果应该如何渲染
通过以上两点,Spring MVC保证了如何选择控制处理请求和如何选择视图展现输出之间的松耦合。
2.SpringMVC运行原理
(1) Http请求:客户端请求提交到DispatcherServlet。
(2) 寻找处理器:由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller。
(3) 调用处理器:DispatcherServlet将请求提交到Controller。
(4)(5)调用业务处理和返回结果:Controller调用业务逻辑处理后,返回ModelAndView。
(6)(7)处理视图映射并返回模型: DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图。
(8) Http响应:视图负责将结果显示到客户端。
3.SpringMVC接口解释
(1)DispatcherServlet接口:
Spring提供的前端控制器,所有的请求都有经过它来统一分发。在DispatcherServlet将请求分发给Spring Controller之前,需要借助于Spring提供的HandlerMapping定位到具体的Controller。
(2)HandlerMapping接口:
能够完成客户请求到Controller映射。
(3)Controller接口:
需要为并发用户处理上述请求,因此实现Controller接口时,必须保证线程安全并且可重用。
Controller将处理用户请求,这和Struts Action扮演的角色是一致的。一旦Controller处理完用户请求,则返回ModelAndView对象给DispatcherServlet前端控制器,ModelAndView中包含了模型(Model)和视图(View)。
从宏观角度考虑,DispatcherServlet是整个Web应用的控制器;从微观考虑,Controller是单个Http请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型(Model)和视图(View)。
(4)ViewResolver接口:
Spring提供的视图解析器(ViewResolver)在Web应用中查找View对象,从而将相应结果渲染给客户。
4.DispatcherServlet:
是整个Spring MVC的核心。它负责接收HTTP请求组织协调Spring MVC的各个组成部分。其主要工作有以下三项:
(1)截获符合特定格式的URL请求。
(2)初始化DispatcherServlet上下文对应WebApplicationContext,并将其与业务层、持久化层的WebApplicationContext建立关联。
(3)初始化Spring MVC的各个组成组件,并装配到DispatcherServlet中。