一. 简单配置 (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. flask框架(一)——初识Flask

    一.初识flask 1.什么是Flask:Flask是一个python编写的web框架,只是一个内核,默认依赖2个外部库:jinja2模板引擎和WSGI工具集--Werkzeug. 2.安装flask ...

  2. FIFO形成3x3矩阵

    Verilog生成矩阵一般是使用shift_ip核,但其实用两个FIFO也行.最近刚好学到这种方法,把原理总结一下. 要求 现在有10x5的数据和对应数据有效指示信号,数据为0~49,要用FPGA对其 ...

  3. (转)AS3正则:元子符,元序列,标志,数量表达符

    (转)AS3正则:元子符,元序列,标志,数量表达符: AS3正则:元子符,元序列,标志,数量表达符 七月 4th, 2010 归类于 AS3前端技术 作者Linkjun 进行评论 as3正则:元子符, ...

  4. 从create-react-app开始,构建项目架构

    1.生成项目 命令行执行:create-react-app  myapp,生成如下结构: 2.安装sass依赖,让你在项目中可以使用scss模块化,index.module.scss: npm i n ...

  5. String字符串创建方法

    String字符串的创建方法我们总结为3+1,3是一共有3种构造方法,1是有一种特殊的创建方法. 首先来看3种构造方法: 1.new String()  无参构造 用该方法创建的字符串是一个空字符串, ...

  6. Jenkins多环境持续集成架构实践

    自动化部署主要是为了解决项目多.环境多.持续集成慢.部署操作麻烦.手动操作易出错.自动化运维等问题. Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建.部署.自动化 ...

  7. JavaScript常用数组操作方法,包含ES6方法

    一.concat() concat() 方法用于连接两个或多个数组.该方法不会改变现有的数组,仅会返回被连接数组的一个副本. var arr1 = [1,2,3]; var arr2 = [4,5]; ...

  8. SAP云平台上的SSO Principal Propagation设置

    我今天试图使用SAP云平台的SAP WebIDE Fullstack时,发现打不开, 遇到如下错误信息: You are not authorized to work with SAP Web IDE ...

  9. Topshelf+Quartz实现windows任务

    Topshelf使用示例, HostFactory.Run(x => { x.Service<QuartzStartup>(s => { s.ConstructUsing(na ...

  10. 在SQL查询结果中添加自增列的两种方法

    解决办法<一>:如果想查询出这个表的信息,并添加一列连续自增的ID,可用如下查询语句: SELECT Row_Number() over ( order by getdate() ) as ...