Springmvc后台校验加文件上传(完整版)

Java 发表评论

后台校验
<!--数据验证-->
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-validator</artifactId>
  <version>4.0.1.GA</version>

</dependency>

<!--jboss logging-->
<dependency>
  <groupId>org.jboss.logging</groupId>
  <artifactId>jboss-logging</artifactId>
  <version>3.3.0.Final</version>
</dependency>

<!--validation api-->
<dependency>
  <groupId>javax.validation</groupId>
  <artifactId>validation-api</artifactId>
  <version>1.0.0.GA</version>


</dependency>

<!--slf4j api-->
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.7.21</version>
</dependency


2:然后创建个实体类UserInfo 在这里使用注解方法来校验属性
别忘了GET.SET 
public class UserInfo {

/*必须是0到100之间*/
@Min(value = 0,message = "成绩最小为{value}")
@Max(value = 100,message = "最大值为{value}")
private Integer score;

/*手机号不能为空,必须是1开头 第二位是34567*/
@NotEmpty(message = "手机号不能我为空")
@Pattern(regexp = "^1[3,4,5,6,7,8,9]\\d{9}$",message = "手机号不正确")
private String phone;

//不能为空
    //必须是6个字符以上
    @NotEmpty(message = "用户不能为空")
    @Size(min = 6,message = "名字至少6个字符")
    private String name;

GET.SET 省略。。。。。。

3:然后controller里来使用和jsp.界面接应
@Controller
public class controller {
    @RequestMapping("/first")
    public ModelAndView doFist(@Valid UserInfo info, BindingResult br) {
        ModelAndView mv = new ModelAndView();
        /*成功后跳的界面*/
        mv.setViewName("/index.jsp");
    /*有一个可以侦测到验证错误总数的方法*/
        int errorCount = br.getErrorCount();
        if (errorCount > 0) {
            //证明模型验证失败
            FieldError score = br.getFieldError("score");//5
            FieldError name = br.getFieldError("name");//5
            FieldError phone = br.getFieldError("phone");//5
            if (score != null) {
                mv.addObject("scormsg", score.getDefaultMessage());
            }
            if (name != null) {
                mv.addObject("namemsg", name.getDefaultMessage());
            }
            if (phone != null) {
                mv.addObject("phonemsg", phone.getDefaultMessage());
            }
            /*失败后的界面*/
            mv.setViewName("/log.jsp");

        }
        return mv;
    }
    }
4:大配置里的节点配置
<!--配置包扫描器-->
<context:component-scan base-package="cn.hayyp.jiaoyan"></context:component-scan>
<bean id="myValidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
    <property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property>
</bean>
<!--mvc注解驱动-->
<mvc:annotation-driven validator="myValidator"/>

最后jsp.的界面
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
    <title>商品</title>
</head>
<body>
<h1>数据校验</h1>
<form action="/first" method="post">
    成绩:<input name="score" /> <span>${scormsg }</span><br/><br/>
    姓名:<input name="name"/><span>${namemsg }</span><br/><br/>
    电话:<input name="phone"/><span>${phonemsg }</span><br/><br/>
    <input type="submit" value="注册"/>
</form>
</body>
</html>


---------------------------------------------------------------------------------------------------------------------------------


文件上传

第1步
<!--文件上传的jar包-->
<dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>1.3.1</version>
</dependency>

<dependency>
  <groupId>commons-io</groupId>
  <artifactId>commons-io</artifactId>
  <version>1.4</version>
</dependency>

第2步

创建一个类 FirstController 使用SpringMVC框架创建注解方法写一个
文件上传的方法别忘了注解:如下
@Controller
public class FirstController {
@RequestMapping("/first")
public String doFirst(MultipartFile upload, HttpSession session){
    //获取到用户上传的文件名字
    String filename = upload.getOriginalFilename();//获取到文件的断名
    //将相对路径转换成绝对路径                                    这个是创建在WEB-INF下面的文件名字
    String realPath = session.getServletContext().getRealPath("/shangchuanwenjian");
    //将file写入指定的路径
    File file=new File(realPath,filename);
    try {
        upload.transferTo(file);
        return "/index.jsp";
    } catch (IOException e) {
        e.printStackTrace();
        return "/WJSC.jsp";
    }
第3步: 大配置里的配置文件

 <!--配置包扫描器-->
<context:component-scan base-package="cn.hayyp.shangchuan"></context:component-scan>
        <!--配置文件上传的专用类-->
        <!--必须要是ID 要不好使-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
<mvc:annotation-driven/>

然后把web.xml指定的配置文件名字改一下
<!--初始化参数-->
<init-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:applicationContextWJSC.xml</param-value>
</init-param>


这个是jsp,上传页面
<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2017/8/30
  Time: 15:17
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>文件上传</h1>
<%--文件上上传必须用post 和 enctype="multipart/form-data"--%>
<form action="/first" method="post" enctype="multipart/form-data">
    文件   <input type="file" name="upload"/>
    <input type="submit"/>
</form>

</body>
</html>

发表评论

电子邮件地址不会被公开。 必填项已用*标注

昵称 *