Ajax的三种传值方式\文件上传\

Spring mvcajax验证,处理json请求

前台提交  传递单个值

function checkName() {
    $.ajax({
        type: "POST",
        url: "${pageContext.request.contextPath }/user/checkName.action",
        dataType: "json",
        data : {
            "name" : $("#name").val()
        },
        success: function(result){
            if(result.flag>0){
                $("#name").focus();
                $("#msg").html(result.msg);
            }else{
                $("#msg").html("");
            }
        }
    });
}

传递多个值

前台

  alert($("#loginForm").serialize());数据格式不是json格式,是key=value

 

function checkName() {
  
    $.ajax({
        type: "POST",
        url: "${pageContext.request.contextPath }/user/checkName.action",
        dataType: "json",
        data: $("#loginForm").serialize(),
        success: function(result){
            if(result.flag>0){
                $("#name").focus();
                $("#msg").html(result.msg);
            }else{
                $("#msg").html("");
            }
        }
    });
}

@RequestMapping(value = "/checkName")
public @ResponseBody Result checkName(User user, HttpServletRequest request){
    Result result = new Result();
    if(user.getName().equals("wyg")||user.getName().equals("jinc")){
        result.setFlag(1);
        result.setMsg("该用户已经注册");
    }else{
        result.setFlag(0);
    }
    return result;
}

json方式传递多个数据

前台  序列化成json格式

function checkName() {
    alert(JSON.stringify($('#loginForm').serializeJSON()));
    $.ajax({
        type: "POST",
        url: "${pageContext.request.contextPath }/user/checkName.action",
        contentType:'application/json;charset=utf-8',
        data:JSON.stringify($('#loginForm').serializeJSON()),//json串
        success: function(result){
            if(result.flag>0){
                $("#name").focus();
                $("#msg").html(result.msg);
            }else{
                $("#msg").html("");
            }
        }
    });
}

后台
@RequestMapping(value = "/checkName")
public @ResponseBody Result checkName(@RequestBody  User user, HttpServletRequest request){
    Result result = new Result();
    if(user.getName().equals("wyg")||user.getName().equals("jinc")){
        result.setFlag(1);
        result.setMsg("该用户已经注册");
    }else{
        result.setFlag(0);
    }
    return result;
}

Json字符串和对象互换

var msg = JSON.stringify($('#loginForm').serializeJSON());
var obj = JSON.parse(msg);
alert(obj.name);
var msg1 = JSON.stringify(obj);
alert(msg1);

Spring mvc的文件上传

RequestParam:映射请求参数类型

Maven工程pom文件添加commons-fileupload依赖包

<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-lang3</artifactId>
  <version>${commons-lang3.version}</version>
</dependency>
<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-io</artifactId>
  <version>${commons-io.version}</version>
</dependency>
<dependency>
  <groupId>commons-net</groupId>
  <artifactId>commons-net</artifactId>
  <version>${commons-net.version}</version>
</dependency>
<dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>${commons-fileupload.version}</version>
</dependency>

Spring mvc添加文件上传解析器
<!-- 多媒体解析器 -->
<!-- 配置文件上传解析器 -->
<bean id="multipartResolver"
      class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 设定默认编码 -->
    <property name="defaultEncoding" value="UTF-8"></property>
    <!-- 设定文件上传的最大值5MB,5*1024*1024 -->
    <property name="maxUploadSize" value="5242880"></property>
</bean>

 

Jsp页面form表单设置enctype参数  修改成post方式

<form id="loginForm" name="loginForm" action="/user/add.action" method="post" enctype="multipart/form-data" >
    name:<input type="text" name="name" id="name" οnblur="checkName()"/><br/>
    pwd:<input type="text" name="pwd"/><br/>
    birthday:<input type="text" name="birthday"/><br/>
    pic:<input type="file" name="pic"/><br/>
    <input type="submit" value="注册" />
</form>

Controller层通过RequestParam参数获取文件上传的信息

RequestParam:设置参数是否必须要  默认值 请求参数和获取参数之间的对应关系

RequestMapping还可以限定请求的具体方法


@RequestMapping(value = "/add",method={RequestMethod.POST})
public String add(@RequestParam(value = "pic", required = false) MultipartFile file, User user, HttpServletRequest request) throws Exception{
    if (file != null && file.getBytes().length > 0) {
        // 先上传文件
        String path = request.getSession().getServletContext()
                .getRealPath("upload");
        path = URLDecoder.decode(path, "UTF-8");

        String fileName = System.currentTimeMillis()+file.getOriginalFilename();
        System.out.println(path);
        File targetFile = new File(path, fileName);
        if (!targetFile.exists()) {
            targetFile.mkdirs();
        }

        // 保存
        try {
            file.transferTo(targetFile);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    int flag = userService.add(user);
    if(flag>0){
        return "redirect:/user/queryAll.action";
    }else{
        return "error";
    }
}

Spring mvcrestful参数处理:微服务架构  单体式架构

以前传递参数 add.action?name=value&pwd=value

Rest风格  add/wang/12345.action

 

前台传递参数

var url = "${pageContext.request.contextPath }/user/addByRestful/"+$("#name").val()+"/"+$("#pwd").val()+"/"+$("#birthday").val()+".action";
$.ajax({
    type: "POST",
    url: url

});

 

 

后台java
@RequestMapping(value = "/addByRestful/{name}/{pwd}/{birthday}")
public String addByRestful(@PathVariable  String name,@PathVariable  String pwd,@PathVariable Date birthday, HttpServletRequest request) throws Exception{
    User user = new User();
    user.setName(name);
    user.setPwd(pwd);
    user.setBirthday(birthday);
    int flag = userService.add(user);
    if(flag>0){
        return "redirect:/user/queryAll.action";
    }else{
        return "error";
    }
}

 

Spring处理全局异常

Web处理异常
<error-page>
  <exception-type>java.lang.Exception</exception-type>
  <location>/error.jsp</location>
</error-page>
<error-page>
  <error-code>500</error-code>
  <location>/error.jsp</location>
</error-page>

 

Spring mvc方式

定义异常处理类
public class ExceptionHandler  implements HandlerExceptionResolver {

    public ModelAndView resolveException(HttpServletRequest request,
                                         HttpServletResponse response, Object handler, Exception ex) {
        ModelAndView mv = new ModelAndView();
        mv.setViewName("error");
        return mv;
    }

}

 

mvc容器里面注入异常类
<bean id="exceptionResolver" class="com.wanho.exceptions.ExceptionHandler"/>

 

 

Spring拦截器:

用户如果已经在session作用域存在,可以查看所有人信息

如果不存在,请登录或注册

 

1、写拦截器类


public class PermissionInterceptor  implements HandlerInterceptor {
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        User loginUser = (User)request.getSession().getAttribute("user");
        if(loginUser!=null){
            return true;
        }else{
            response.sendRedirect(request.getContextPath()+"/index.jsp");
            return false;
        }
    }

    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

 

 

2、xml文件注册拦截器

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**" />
        <mvc:exclude-mapping path="/**/add.action" />
        <bean class="com.wanho.interceptor.PermissionInterceptor" />

    </mvc:interceptor>
</mvc:interceptors>

 

 

拦截器和过滤器的差异?

拦截器只能针对springHandler对象(业务控制器),可以精细化到方法一级

过滤器:可以针对所有请求的资源,也可以通过url地址来分析

 

Spring定时器:

 

转载于:https://www.cnblogs.com/chenzhengwei/p/8625527.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值