一. 简单配置 (XML)

1. web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"> <!-- 配置:所有请求由SpringMVC管理 -->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping> </web-app>

2. DispatchServlet-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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> <!-- 1. 配置 url 处理映射 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!-- 2.配置控制器处理适配器 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> <!-- 3. 配置控制器 (访问路径) -->
<bean name="/user.do" class="com.q.backoffice.web.controller.UserController" /> <!-- 4. 配置资源视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/views/"></property> <!-- 后缀 -->
<property name="suffix" value=".jsp"></property>
</bean> </beans>

3. UserController.java

package com.q.backoffice.web.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class UserController implements Controller { @Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { ModelAndView mav = new ModelAndView("user/userlist"); mav.addObject("name", "q"); return mav;
}
}

4. userlist.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户列表</title>
</head>
<body> <h3>用户列表</h3>
${name} </body>
</html>

二. 简单配置 (注解)

1. web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"> <!-- 配置:所有请求由SpringMVC管理 -->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping> </web-app>

2. DispatcherServlet-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"> <!-- 配置:所有请求由SpringMVC管理 -->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping> </web-app>

3. UserController

@Controller
@RequestMapping("/user") // 根路径
public class UserController{ // 获取页面
@RequestMapping("/list")
public String list(){
return "user/userlist";
} }

三. 获取表单发送的数据

1. 三种方式:

// 获取表单发送的数据,方式一(在方法中传递参数):

@RequestMapping(value = "/register", method = RequestMethod.POST)
public String register(String username, String password, int age, String birthday, String[] hobbyIds){ System.out.println(username);
System.out.println(password);
System.out.println(age);
System.out.println(birthday);
System.out.println(Arrays.toString(hobbyIds)); return "user/register";
}

// 获取表单发送的数据,方式二 (创建一个User类):

@RequestMapping("/register2")
public String register2(User user){ System.out.println(user); return "user/register";
}

// 获取表单发送的数据,方式三(在类中嵌套一个类,需要在页面中加上 类属性:user.username):

@RequestMapping("/register3")
public String register3(UserExt user){ System.out.println(user); return "user/register";
}

2. 接收 ArrayList 类型数据

设置(记得 set/get 方法):

private List<User> users = new ArrayList<User>();

发送:

// 一个 user对象
<input type="text" name="user[0].username"> // 两个 user对象
<input type="text" name="user[1].username">

接收:

public String register(UserExt userExt){
System.out.println(userExt.getUsers());
reutrn "user/info";
}

3. 接收 Map 类型数据

设置(记得 set/get 方法):

private Map<String, Object> info = new HashMap<String, Object>();

发送:

<input type="text" name="info["username"]">

接收:

public String register(UserExt userExt){
System.out.println(userExt.getInfo());
reutrn "user/info";
}

四. 展示数据

1.  UserController.java

@RequestMapping("userlist")
public String register4(Model model){ // 模拟数据库数据
List<User> userList = new ArrayList<User>();
User user1 = new User("q","123",1,"2018");
user1.setId(1);
User user2 = new User("q2","456",1,"2018");
user2.setId(2);
userList.add(user1);
userList.add(user2); // 将数据存储到 Modle 中
model.addAttribute("userList",userList); return "user/userlist";
}

2. userlist.jsp

<table border="1">
<tr>
<td>账号</td>
<td>密码</td>
<td>年龄</td>
<td>生日</td>
</tr> <c:forEach items="${userList}" var="user">
<tr>
<td>${user.username}</td>
<td>${user.password}</td>
<td>${user.age}</td>
<td>${user.birthday}</td>
</tr>
</c:forEach> </table>

五. 修改数据

1. 方式一:

// 修改数据1:
@RequestMapping("/edit")
public String register5(int id, Model model){ // 模拟数据库数据
User user = new User("q","123",1,"2018/1/1");
user.setId(1);
model.addAttribute("user", user); return "user/edit";
}

# 页面设置:

<a href="${pageContext.request.contextPath}/user/edit.do?id=${user.id}">修改1</a>

2. 方式二:

// 修改数据2:
@RequestMapping("/edit/{id}")
public String register5(Model model){ // 模拟数据库数据
User user = new User("q","123",1,"2018/1/1");
user.setId(1);
model.addAttribute("user", user); return "user/edit";
}

# 页面设置:

<a href="${pageContext.request.contextPath}/user/edit/${user.id}.do">修改2</a>

六. 转发

@RequestMapping("test1")
public String run1(){
// 同一个控制器的转发
return "forward:list.do";
}

七. 重定向

@RequestMapping("test2")
public String run2(){
// 同一个控制器的转发
return "redirect:list.do";
}

八. 路径指定参数(如果没有该参数,就会抛异常)

// defaultValue 设置默认值(即使没有该参数也会跳转)
@RequestMapping("test3")
public String run3(@RequestParam(value = "uid", required = true, defaultValue = "1") Integer id){
System.out.println(id);
return "redirect:list.do";
}

八. 接收和响应 json 数据

package com.q.backoffice.web.controller;

import model.Student;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; @Controller
@RequestMapping("/student") // 根路径
public class UserController3 { @RequestMapping("/register")
public String register(){ return "student/register";
} // 接收和相应 Json 数据 /*
* @RequestBody :将 json 数据转换成模型对象
* @ResponseBody :返回 json 数据,把对象转换为字符串返回
* */ @RequestMapping("/get")
public @ResponseBody Student get_json(@RequestBody Student s){
System.out.println(s);
return s;
} @RequestMapping("/get1")
public @ResponseBody Student get_json1(Student s){
System.out.println(s);
return s;
} }

也许每个人都是无聊的,孤独的吧?

Java - 框架之 SpringMVC的更多相关文章

  1. java框架之springmvc

    一.HelloWorld程序 (1)导包:四个spring 核心包(core.beans.context.expression).一个aop包.两个 web 包和一个logging 包: (2)配置 ...

  2. java框架之SpringMVC(1)-入门&整合MyBatis

    前言 SpringMVC简介 SpringMVC 是一个类似于 Struts2 表现层的框架,属于 SpringFramework 的后续产品. 学习SpringMVC的原因 SpringMVC 与 ...

  3. Java框架之SpringMVC 03-RequestMapping-请求数据-响应数据

    SpringMVC SpringMVC是一种轻量级的.基于MVC的Web层应用框架. 通过一套 MVC 注解,让 POJO 成为处理请求的控制器,而无须实现任何接口. 采用了松散耦合可插拔组件结构,比 ...

  4. java框架之SpringMVC(2)-补充及拦截器

    高级参数绑定 package com.zze.springmvc.web.controller; import org.springframework.stereotype.Controller; i ...

  5. Java框架之SpringMVC 05-拦截器-异常映射-Spring工作流程

    SpringMVC 拦截器 Spring MVC也可以使用拦截器对请求进行拦截处理,可以自定义拦截器来实现特定的功能,自定义的拦截器可以实现HandlerInterceptor接口中的三个方法,也可以 ...

  6. Java框架之SpringMVC 04-视图解析-Spring表单-JSON-上传下载

    SpringMVC 视图解析 请求处理方法(controller方法)执行完成后,最终返回一个 ModelAndView 对象,即使出现异常也会返回一个 ModelAndView 对象.对于那些返回 ...

  7. Java自学路线图之Java框架自学

    Java自学路线图的框架分为两个阶段,第一阶段的Java框架包含六个内容:MyBatis,Spring,SpringMVC,Maven高级,Git,Dubbo. 在Java自学过程中掌握框架的使用,对 ...

  8. java框架之SpringBoot(5)-SpringMVC的自动配置

    本篇文章内容详细可参考官方文档第 29 节. SpringMVC介绍 SpringBoot 非常适合 Web 应用程序开发.可以使用嵌入式 Tomcat,Jetty,Undertow 或 Netty ...

  9. 2016年7款最佳 Java 框架

    毫无疑问,Java 是目前最为流行的编程语言之一,这里我们挖掘出了一些比较受欢迎的框架的有效信息,它们可以减轻全球软件开发人员的日常工作. RebelLabs的一项调查显示,通过在线Java用户论坛( ...

随机推荐

  1. java当中JDBC当中JNDI用来查找dataSource的例子

    [学习笔记] 8.JNDI用来查找dataSource的例子: import javax.naming.InitialContext;import javax.naming.Context; impo ...

  2. laravel中一些非常常用的php artisan命令

    php artisan 命令在开发laravel项目中非常常用,下面是一些总结 composer config -g repo.packagist composer https://mirrors.a ...

  3. TZOJ5255: C++实验:三角形面积

    #include<iostream> #include<iomanip> #include<math.h> #include<cmath> using ...

  4. Spring Cloud--实现Eureka的高可用(Eureka集群搭建)实例

    将10086注册到10087上: 再在10086服务的基础上复制一个Eureka的服务,端口为10087,将其注册到10086上: application-name的名称保持一致,只是一个服务的两个实 ...

  5. caurina缓动类

    一.简单的缓动 一个实例名为box的正方体,开始alpha为0.5,在两秒内移动到x:300 y:100的位置,alpha变为1.import caurina.transitions.Tweener; ...

  6. 转:深入浅出Java垃圾回收机制

    原文链接:http://www.importnew.com/1993.html 对于Java开发人员来说,了解垃圾回收机制(GC)有哪些好处呢?首先可以满足作为一名软件工程师的求知欲,其次,深入了解G ...

  7. c# 基于委托的异步编程模型(APM)测试用例

    很多时候,我们需要程序在执行某个操作完成时,我们能够知道,以便进行下一步操作. 但是在使用原生线程或者线程池进行异步编程,没有一个内建的机制让你知道操作什么时候完成,为了克服这些限制,基于委托的异步编 ...

  8. 使用winform程序控制window服务的操作

    继上篇 c#之添加window服务(定时任务) 基础之上, 这篇文章主要讲述,使用winform程序来控制window服务的安装,启动,停止,卸载等操作 1.在同一个解决方案添加winform项目,如 ...

  9. ADO.Net和SqlHelper封装

    1.什么是ADO.Net 简单来讲,ADO.NET是用于和数据源打交道的.Net结束,是一组向.NET程序员公开数据访问服务的类   2.ADO.NET的组成部分和对象模型 (1)ADO.NET的两个 ...

  10. .Net MVC 输出HTML内容

    1.后台代码中的带HTML标记的内容 ViewData["msg"]="<b>Title</b>"; 然则如许打印出来的就是 <b ...