zoukankan      html  css  js  c++  java
  • SpringMVC(三)

    springmvc的文件上传

    1.导入jar包

     下载地址:https://github.com/suyirulan/putao/tree/master/fileupload_jar

    jsp页面:

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; 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="photo" /><br>
            <input type="submit" value="上传" />
        </form>
    </body>
    </html>

    注意:表单form标签的属性method="post" 必须是post提交;enctype="multipart/form-data"是必须写的,并且文件的name=" "也是必须写的

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

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

    注意:value中的单位是字节;字节计算:1M=1024k=1024*1024=1048576字节

    3.在Controller控制层处理代码

    package com.zhiyou100.xg.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.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.multipart.MultipartFile;
    
    import com.zhiyou100.xg.bean.Student;
    
    @Controller
    public class StudentController {
        //文件上传
        @RequestMapping("addStudent")
        public String addStudent(Student stu,MultipartFile photo,HttpServletRequest request,Model model) {
            String path = request.getServletContext().getRealPath("/photo");
            File file = new File(path);
            if(!file.exists()) {
                file.mkdirs();
            }
            
            String filename = System.currentTimeMillis()+ photo.getOriginalFilename();
            stu.setPhotos("photo/"+filename);
            
            File targetfile = new File(path+"/"+filename);
            try {
                FileUtils.writeByteArrayToFile(targetfile, photo.getBytes());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            model.addAttribute("stu", stu);
            return "index";
        }
    }

    2.springmvc的拦截器

    1.创建一个类,实现接口Handlerinterceptor

    2.重写接口中的方法

    1 public class MyInterceptor implements HandlerInterceptor{
     2 
     3     @Override
     4     public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
     5             throws Exception {
     6         // TODO Auto-generated method stub
     7         
     8     }
     9 
    10     @Override
    11     public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
    12             throws Exception {
    13         // TODO Auto-generated method stub
    14         
    15     }
    16 
    17     @Override
    18     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
    19         Object name = request.getSession().getAttribute("name");
    20         if(name!=null) {
    21             return true;
    22         }else {
    23             System.out.println("拦截器");
    24             return false;
    25         }
    26     }
    27
    28 }

    3.在springmvc配置文件中配置拦截器

        <!-- 配置拦截器 -->
        <mvc:interceptors>
            <mvc:interceptor>
                <mvc:mapping path="/user/**"/>
                <mvc:exclude-mapping path="/user/tologin"/><!-- 不过滤login页面  -->
                <mvc:exclude-mapping path="/user/login"/>
                <mvc:exclude-mapping path="/user/register"/>
                <bean class="com.zhiyou100.xg.interceptor.MyInterceptor"></bean>
            </mvc:interceptor>
        </mvc:interceptors>

    4.在Controller控制层处理代码

    package com.zhiyou100.xg.controller;
    
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.SessionAttributes;
    
    
    
    @Controller
    @RequestMapping("/user")
    @SessionAttributes(names= {"name","address"})//键名叫:name保存的作用域为session
    public class UsersController {
        
        @RequestMapping("tologin")
        public String tologin(){
            return "login";
        }
        
        
        @RequestMapping("login")
        public String login(String name,String password ,Model model) {
            if("admin".equals(name)&&"admin".equals(password)) {
                model.addAttribute("name", name);
                return "list";
            }else{
                return "login";
            }
            
        }
        
        @RequestMapping("register")
        public String register() {
            return "register";
        }
        
        
        @RequestMapping("list") //如果没有登陆,那么访问该请求地址是被返回到登录页面
        public String list() {
            System.out.println("查询所有用户信息");
            return "list";
        }
    
    
    }

    需求:index.jsp;register.jsp;login.jsp不要过滤而list页面需要登陆成功才能看见

    jsp页面放置位置

    1.index.jsp页面

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <a href="user/tologin">登录</a>
    <a href="user/register">注册</a>
    <a href="user/list">查询</a>
    <a href="user/delete">删除</a>
    
    </body>
    </html>

    2.login.jsp页面

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <form action="login" method="post">
            用户名:<input type="text" name="name"/><br>
            密码:<input type="text" name="password"/><br>
            <input type="submit" value="登录">
        </form>
    </body>
    </html>

    3.register.jsp页面

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <form action="users/register" method="post">
        姓名:<input type="text" name="unames"/><br>
        密码:<input type="text" name="password"/><br>
        手机:<input type="text" name="phone"/><br>
    
        <input type="submit" value="提交"/>
        </form>
    </body>
    </html>

    4.list.jsp页面

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    ==========list============
    </body>
    </html>

    3.springmvc后台校验

    1.引入jar

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

    详细注解:

    3.在控制层接受参数时

     4.jsp页面

  • 相关阅读:
    Median Value
    237. Delete Node in a Linked List
    206. Reverse Linked List
    160. Intersection of Two Linked Lists
    83. Remove Duplicates from Sorted List
    21. Merge Two Sorted Lists
    477. Total Hamming Distance
    421. Maximum XOR of Two Numbers in an Array
    397. Integer Replacement
    318. Maximum Product of Word Lengths
  • 原文地址:https://www.cnblogs.com/xg123/p/11462737.html
Copyright © 2011-2022 走看看