SpringMVC学习日志三

一、回顾

1.1 如果接受的参数为日期时间类型,需要在controller中进行处理。

   @InitBinder

   使用实体类封装时间类型 @DateTimeFormat

1.2 如何保存数据让网页获取该数据。

  ModelAndView:

  Model: 默认为request作用域

  Map:

  HttpServletRequest:

  HttpSession:

  @SessionAttributes(name={})

1.3 处理静态资源。

   如果DispatcherServlet处理的请求地址为/,那么它也会处理静态资源。

  在配置文件中使用<mvc:default-servlet-handler> 不处理静态资源。

1.4 如何使用重定向。Redirect

1.5 Springmvc 完成ajax功能。

  Ajax时服务器响应的数据类型。 html, json

  响应的结果是html @ResponseBody 但是它会出现乱码。StringHttpMessageConvert.

  响应的结果是Json类型。需要借助jackson的jar包以及@ResponseBody

二、文件上传

  1.导入jar包

  2.网页。

  表单必须是post提交,编码必须是multipart/form-data  文件上传文本框必须起名。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form action="addStudent" method="post" enctype="multipart/form-data" >
        姓名:<input type="text" name="name"><br/>
        年龄:<input type="text" name="age"><br/>
        请选择上传的文件:<input type="file" name="myfile" /><br />
        <input type="submit" value="上传">
    </form>
</body>
</html>

  3.在springmvc中配置文件上传解析器。

  <!-- 配置文件上传解析器 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设置文件上传的大小 -->
        <property name="maxUploadSize" value="20971520"></property>
    </bean>

  4.在控制层处理代码

package com.zhiyou100.klb.controller;

import java.io.File;
import java.io.IOException;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

@Controller
public class UploadController {

    @RequestMapping("upload")
    public String upload(MultipartFile myfile,HttpServletRequest request) {
        //1.获取文件上传的真实保存路径
        String path = request.getServletContext().getRealPath("/upload");
        System.out.println(path);
        //2.创建一个文件对象
        File file = new File(path);
        if(!file.exists()) {
            file.mkdirs();
        }

        //3.获取文件名
        String name = myfile.getOriginalFilename();
        System.out.println(name);
        File targetFile = new File(path + "/" + name);

        try {
            FileUtils.writeByteArrayToFile(targetFile, myfile.getBytes());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return "redirect:index.jsp";
    }
}

三、拦截器(拦截都是控制层的地址。 filter: )

  1.创建一个类实现接口 HandlerInterceptor

  2.重写接口的中方法

package com.zhiyou100.klb.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class MyInterceptor implements HandlerInterceptor {

    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
            throws Exception {
        System.out.println("请求处理完成后执行的方法");

    }

    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
            throws Exception {
        System.out.println("==========");

    }

    @Override
    public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
        // TODO Auto-generated method stub
        System.out.println("起始点");
        return true;//如果返回true表示允许通过
    }

}

  3.把创建的类配置到springmvc文件中。

  <!-- 配置拦截器 -->
    <mvc:interceptors>
        <!-- 可配置多个拦截器 -->
        <mvc:interceptor>
            <!-- **表示user下所有的子目录以及请求地址 -->
            <mvc:mapping path="/user/**"/>
            <mvc:exclude-mapping path="/user/list.do"/>
            <bean class="com.zhiyou100.klb.interceptor.MyInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

四、数据校验

  1.导入jar包

  2.在相应的实体类中加入注解

  3.在控制层接受参数时。

    @RequestMapping("register")    //requestMapping:表示的就是你的访问地址
    public String register(@Valid Users user,BindingResult br,Model model) {
        if(br.hasErrors()) {
            List<FieldError> fieldErrors = br.getFieldErrors();
            Map<String,Object> errorMsg = new HashMap<>();
            for(FieldError f:fieldErrors) {
                errorMsg.put(f.getField(), f.getDefaultMessage());
            }
            model.addAttribute("errorMsg", errorMsg);
            return "register";
        } else {
            list.add(user);
            return "forward:list";
        }
    }

  4.在.jsp文件中接收错误信息

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    欢迎注册
    <form action="/SpringMVC-user/user/register" method="post">
        账号:<input type="text" name="name" >${errorMsg.name }<br/>
        密码:<input type="text" name="password">${errorMsg.password }<br/>
        电话:<input type="text" name="phone">${errorMsg.phone }<br/>
        <input type="submit" value="注册">
        <input onclick="location.href=‘javascript:history.go(-1)‘" type="button" value="返回">
    </form>
</body>
</html>

  5.常见注解

原文地址:https://www.cnblogs.com/kklb/p/11462419.html

时间: 2024-10-10 01:17:41

SpringMVC学习日志三的相关文章

springmvc学习第三天

利用spring mvc 实现crud 1.导入jar包 commons-logging-1.2.jarjstl.jarspring-aop-4.1.6.RELEASE.jarspring-beans-4.1.6.RELEASE.jarspring-context-4.1.6.RELEASE.jarspring-core-4.1.6.RELEASE.jarspring-expression-4.1.6.RELEASE.jarspring-web-4.1.6.RELEASE.jarspring-w

SpringMVC学习日志二

一.回顾 1.MVC流程 2.SpringMVC流程 二.接收的参数为日期Date时 1.在相应的controller页追加 @InitBinder public void initBinder(ServletRequestDataBinder binder){ //只要网页中传来的数据格式为yyyy-MM-dd 就会转化为Date类型 binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateForma

SpringMVC学习日志一

一.MVC流程图 1.传统MVC 2.SpringMVC 二.一个简单的SpringMVC 1.导入相关的包 2.配置DispatcherServlet 在web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp

MySQL学习日志(三)

#用户管理 查询优化 日志  ##MySQL 用户管理  用户账号: [email protected] 用户账号管理: CREATE USER   创建用户         CREATE USER [email protected]    [        IDENTIFIED BY [PASSWORD] 'password'           ]        主机也可以使用通配符: create user [email protected]'172.16.100.1_ _'  IDENT

SpringMVC学习总结(三)——Controller接口详解(2)

4.5.ServletForwardingController 将接收到的请求转发到一个命名的servlet,具体示例如下: package cn.javass.chapter4.web.servlet; public class ForwardingServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Servle

SpringMVC学习笔记三:Controller的返回值

springMVC的返回值有ModelAndView,String,void,Object类型 项目目录树: 该项目是在前面项目的基础上修改的,这里的pom.xml文件需要加入使用到的包,应为@ResponseBody需要使用的包 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version&

SpringMVC学习(三)

静态资源访问和default-servlet-handler 由于在dispatcherServlet中设置了对"/*"进行过滤,那么当系统内访问到诸如js等静态资源的时候会报错. 因此,需要在servlet-Context.xml中配置default-servlet-handler和annotation-driven两个bean. 前者会判断来了的请求是否被映射过(即使用RequestMapping进行过标记),如果映射过,则交给dispatcherServlet进行映射:如果没有,

SpringMVC学习(三)整合SpringMVC和MyBatis

工程结构 导入jar包 配置文件 applicationContext-dao.xml---配置数据源.SqlSessionFactory.mapper扫描器 applicationContext-service.xml---配置service接口 applicationContext-transaction.xml--事务管理 sprintmvc.xml---springmvc的配置,配置处理器映射器.适配器.视图解析器 SqlMapConfig.xml---mybatis的配置文件,配置别名

SpringMVC 学习笔记(三) 使用ServletAPI 和 实体 做为参数

1.1. 使用实体类接收请求参数 Spring MVC 会按请求参数名和 实体类属性名进行自动匹配,自动为该对象填充属性值.支持级联属性. @RequestMapping("/pojoParams") public String pojoParams(User user){ System.out.println(user); return "helloworld"; } User.java: package com.ibigsea.springmvc.model;