本文共 4051 字,大约阅读时间需要 13 分钟。
本讲我们使用一个用户添加的案例来演示。
首先我们创建一个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
javaBean
类User
: 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/