JAVA 提交form表单 后台获取不到参数及乱码问题

        <form class="form-horizontal m-t" id="commentForm" method="post" enctype="multipart/form-data">

            <div class="form-group">
                <label class="col-sm-2 control-label" style="float:left;"><font>标题:</font></label>
                <div class="col-sm-6">
                    <input id="newsTitle" name="newsTitle" minlength="2" type="text" class="form-control" required="" aria-required="true" value="">
                </div>
            </div>
            <div class="form-group">
                <label class="col-sm-2 control-label" style="float:left;"><font>关键词:</font></label>
                <div class="col-sm-6">
                    <input id="keywords" name="keywords" minlength="2" type="text" class="form-control" required="" aria-required="true" value="">
                </div>
            </div>
            <div class="form-group">
                <label class="col-sm-2 control-label" style="float:left;"><font>描述:</font></label>
                <div class="col-sm-6">
                    <input id="description" name="description" minlength="2" type="text" class="form-control" required="" aria-required="true" value="">
                </div>
            </div>
            <div class="form-group">
                <label class="col-sm-2 control-label" style="float:left;"><font>详细:</font></label>
                <div class="col-sm-6">
                    <textarea id="newsContent" name="newsContent" minlength="2" rows="4" type="text" class="form-control"></textarea>
                    <script type="text/javascript">CKEDITOR.replace(‘newsContent‘)</script>
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-6 col-sm-offset-2">
                    <button class="btn btn-primary" type="submit" onclick="return btnsubmit()">提交</button>
                    <button class="btn btn-danger" type="button" id="cancel">取消</button>
                </div>
            </div>
        </form>

这是我的表单提交代码,当然在提交的手利用js来改变acction,重点是提交进入控制器之后居然得不到参数,我后台是利用对象直接获取的参数

    @RequestMapping(value="/AddorEdit",produces = {"application/text;charset=UTF-8"})
    public String AddorEdit(NewsManager model,HttpServletRequest request)throws ServletException, IOException
    {
        request.setCharacterEncoding("UTF-8");
        String userName = request.getParameter("newsTitle");
        var user = ManageProvider.getProvider().Current(request);
        if (user==null||user.getId()==0)
        {
            return "login/login";
        }
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        java.util.Date time=null;
        try {
            time= df.parse(df.format(new Date()));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        model.setCreateDate(time);
        model.setCreateName(user.getUserName());
        model.setState(1);
        ApplicationContext ctx = new ClassPathXmlApplicationContext(
                "file:D:/Program Files/JetBrains/javaproject08/web/WEB-INF/applicationContext.xml");
        NewsManagerServiceImpl newsmanagerserviceimpl=(NewsManagerServiceImpl)ctx.getBean("newsManagerservice");
        newsmanagerserviceimpl.insertNewsManager(model);
        return "news/newsindex";
    }

解决办法:前台页面代码中多了个

enctype="multipart/form-data"这个属性 去掉了就可以了然后就是传过来的参数乱码了

我在控制器添加

@RequestMapping(value="/AddorEdit",produces = {"application/text;charset=UTF-8"}),页面也添加了编码
<%@ page contentType="text/html;charset=UTF-8" language="java" %><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />还有许多网上提到的
request.setCharacterEncoding("UTF-8");说是加段这个就可以了,但在我的项目中没用最后再网站上看到了在web.xml中加入这样一段代码(推荐放在最前面,我的就是这样好的)完美解决了
    <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

 

原文地址:https://www.cnblogs.com/Argus-sqh/p/12707520.html

时间: 2024-11-08 13:56:32

JAVA 提交form表单 后台获取不到参数及乱码问题的相关文章

js获取上传文件后缀名(附js提交form表单)

代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <script> function check_file()  {   var strFileName=form1.FileName.value;   if (strFileName=="")   {     alert(&

Jquery提交form表单

前台代码 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Js_submit.aspx.cs" Inherits="Ctrip.Corp.Report.OfflineSite.CorpReportSetting.Js_submit" %> 2 3 <html xmlns="http://www.w3.org/1999/xhtml

使用ajax提交form表单,包括ajax文件上传 转http://www.cnblogs.com/zhuxiaojie/p/4783939.html

使用ajax提交form表单,包括ajax文件上传 前言 使用ajax请求数据,很多人都会,比如说: $.post(path,{data:data},function(data){ ... },"json"); 又或者是这样的ajax $.ajax({ url:"${pageContext.request.contextPath}/public/testupload", type:"post", data:{username:username},

ajax提交form表单资料详细汇总

一.ajax提交form表单和不同的form表单的提交主要区别在于,ajax提交表单是异步提交的,而普通的是同步提交的表单.通过在后台与服务器进行少量数据交换,ajax 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新.传统普通的网页(不使用ajax)如果需要更新内容,必须重载整个网页页面. 二.通过ajax提交form实现的登录实例: <body> <h1 align="center">用户登录</h1> &

AJAX提交form表单带文件上传

过了三天才想要写博客,这样不好,要改正 在做毕设的时候,用户发帖涉及到了文件上传的问题,在这里记录一下 背景: 在用户发帖的时候,用户只想发表文字postText,还有些用户想在发表postText的同时还发表一些图片,如何做? 上代码 不写的太细了,和流水账似的,挑重点记录一下. 1.前台的文件上传 本来想用form表单直接上传了,但是form提交时会刷新整个页面,但这不是我想要的,所以使用了ajax提交form表单. 利用ajax提交表单需要用到jquery.form.js这个包,网上有很多

ajax()使用serialize()提交form表单

jQuery的serialize()方法通过序列化表单值,创建URL编码文本字符串,我们就可以选择一个或多个表单元素,也可以直接选择form将其序列化,如: <form id="form"> <ul class="register_content_right_form_one"> <li id="register_content_on" style="margin-top: 16px;">

ajax(ajaxSubmit)提交form表单

ajaxSubmit提交form表单 依赖脚本: 1 <script src="<%=request.getContextPath()%>/huangdao/jquery/jquery-form.js" type="text/javascript"></script> HTML 1 <form id="saveForm" name="form01" class="demofo

按下回车默认提交form表单问题

最近开发中碰到一个问题,项目中有几个列表展示页面,允许用户通过查询条件模糊查询数据.用户录入关键字后点击回车会调用查询方法根据关键字查询,原先功能没有问题,但是最近发现在查询输入框中按下回车会直接刷新页面不调用查询方法.检查发现有人在查询模块新增了一个form表单,找了很多和form表单相关资料才发现当form表单内只有一个type="text"类型的<input>标签时按下回车默认会提交form表单.解决方法很简单就是在form表单内新增一个隐藏的type="t

通过php jq ajax 提交form表单

参考http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2013/0619/13568.html html <div id="contact_form"> <form name="contact" method="post" > <label for="name" id="name_label">姓名</label