一. 简单配置 (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. 深度学习--pytorch安装

    一.查看cuda及cudnn版本 先确保安装了显卡:nvidia-smi 查看 cat /usr/local/cuda/version.txt cat /usr/local/cuda/include/ ...

  2. 创建包含CRUD操作的Web API接口2:实现Get方法

    本节是前一节的延续,上一节中我们已经为我们的Web API项目创建必要的基础设施. 在本节中,我们将在我们的控制器类中实现操作方法,这些方法用来处理HTTP GET请求. 根据Web API命名约定, ...

  3. oralce数据表空间满了

    --切换至oralce用户 su - oracle--执行sqlplus / as sysdba --查询表空间使用情况SELECT Upper(F.TABLESPACE_NAME) "表空 ...

  4. C# CheckBoxList绑定值,设置及获取

    前端页面:.aspx <asp:CheckBoxList ID="ckbdot" runat="server" RepeatDirection=" ...

  5. Linux环境Ubuntu上安装GitLab

    本文主要介绍在Ubuntu[Ubuntu 18.04.3]上安装最新的GitLab版本控制工具. 一.安装更新GitLab所需要的依赖项 sudo apt-get update 下载过程中,网络要有所 ...

  6. stack + positioned

    stack 下套container, 发现最大的显示,小的都没显示, 把所有都套个POSITIONED, 都正常显示了.

  7. Linux REDHAT 7 关闭、禁用防火墙服务

    1 查看防火墙状态 [root@lvxinghao ~]# systemctl status firewalld 2 查看开机是否启动防火墙服务[root@lvxinghao ~]# systemct ...

  8. Solr-rce历史漏洞复现

    最近Solr又出了一个RCE漏洞,复现了一下 # coding: utf-8 import requestsimport argparsefrom urllib import parse if __n ...

  9. 一个关于integer表示范围的问题

    1:在做字符串parse为integer 类型市,一直出现问题就是当我parse “”2851663837”报错, 但是当我parse “1417585794”  可以.原来是超出integer 类型 ...

  10. 快速为不同 Git 平台配置用户

    在 ~ 目录下创建 config 文件可以为项目配置默认的用户信息,但如果希望经常切换,那么最好就是通过命令为项目单独设置用户. 我使用的 shell 是 zsh, 所以我在 ~/.zshrc 文件中 ...