博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC系列教程——04命令控制器讲解
阅读量:3958 次
发布时间:2019-05-24

本文共 4051 字,大约阅读时间需要 13 分钟。

SpringMVC系列教程——04命令控制器讲解

本讲我们使用一个用户添加的案例来演示。

文章目录

一.准备工作

首先我们创建一个jsp页面addUser.jsp(如果对下面的action内容不懂请参见):

<%--  Created by IntelliJ IDEA.  User: Administrator  Date: 2020/7/29  Time: 23:08  To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %>    添加用户
用户名:
密码:
性别:
生日:

然后我们创建一个控制器UserAddController:

package 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 UserAddController implements Controller {
@Override public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
ModelAndView mav = new ModelAndView("user/addUser"); return mav; }}

DispatcherServlet-servlet.xml文件内容为:

接下来我们访问:http://localhost:8080/userAddController.do

在这里插入图片描述
上面页面访问成功,接下来我们创建一个javaBeanUser:

package web.model;public class User {
private String name; private String password; private String gender; private String birthday; public User(){
} @Override public String toString() {
return "User{" + "name='" + name + '\'' + ", password='" + password + '\'' + ", gender='" + gender + '\'' + ", birthday='" + birthday + '\'' + '}'; } public String getName() {
return name; } public void setName(String name) {
this.name = name; } public String getPassword() {
return password; } public void setPassword(String password) {
this.password = password; } public String getGender() {
return gender; } public void setGender(String gender) {
this.gender = gender; } public String getBirthday() {
return birthday; } public void setBirthday(String birthday) {
this.birthday = birthday; }}

二.演示

根据前面的addUser.jsp可知:表单提交的路径配置如下

action="${
pageContext.request.contextPath}/command.do

于是我们创建一个控制器CommandController

package web.Controller;import org.springframework.validation.BindException;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.AbstractCommandController;import web.model.User;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class CommandController extends AbstractCommandController {
public CommandController(){
//这么做的作用在于告诉SpringMVC把表单的数据存到User里面去 this.setCommandClass(User.class); } @Override /** * @param o 将表单数据存到一个User对象中,这个对象传递给了o */ protected ModelAndView handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, BindException e) throws Exception {
System.out.println((User)o); ModelAndView mav = new ModelAndView("user/userInfo"); httpServletRequest.setAttribute("user",(User)o); return mav; }}

下图我们发现AbstractCommandController间接的实现了Controller接口

在这里插入图片描述
DispatcherServlet-servlet.xml里面添加配置控制器

userInfo.jsp的内容如下:

<%--  Created by IntelliJ IDEA.  User: Administrator  Date: 2020/7/30  Time: 0:30  To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %>    用户注册表单提交数据:
用户名:${
user.name}
密码:${
user.password}
性别:${
user.gender}
年龄:${
user.birthday}

接下来我们访问:

在这里插入图片描述
得到下面结果:
在这里插入图片描述
在这里插入图片描述
出现了乱码的现象,那么我们思考可以这么做,通过过滤器先把数据拦截,设置字符编码,然后放行即可。在web.xml里面加上下面内容即可:

EncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
EncodingFilter
/*

成功:

在这里插入图片描述

转载地址:http://fxlzi.baihongyu.com/

你可能感兴趣的文章