spring的ajax问题,后台接收HttpServletRequest一直为空 5C

前端的ajax代码:
图片说明

后端代码:
图片说明

ajax不管加上contenttype还是不加,后台的HttpServletRequest一直为空
请问各位大佬,这是什么问题?

4个回答

直接在方法里加,如:public String retuenString(http......request,String username,String content) 试试

如果上面答案不行,试试吧ajax里得contentType注释掉

url不对吧,不能直接写这个,前面可以加个 / 或者 ./ 试下,反正页面调试下,看下实际上url全部是什么,是不是你的后台接口地址

ajax里面加上dataType: "json",试试

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ajax传数据给后端HttpServletRequest为null

![![js](https://img-ask.csdn.net/upload/201708/04/1501818589_898680.png) 连接成功就是传值得时候后台取不到值一直是null!![图片说明](https://img-ask.csdn.net/upload/201708/04/1501829270_406737.png)

springmvc后台如何接收ajax传的json格式的数据,以及json数据采用哪种方式传到后台

我现在遇到一个难题,以前,我用ajax传输数据到后台,后台用springmvc接收,成功了,但是,那个时候,我用的ajax的data部分是{"dcCode":dcCode,"itemNo":itemNo...},这样,我是一个参数,一个参数输入的,虽然慢,但是,还是成功地传输了。现在,我遇到的问题是,很多的参数,需要用遍历的方法来传参,我用jsonstr拼接json字符串的方法,拼出了以下的json格式,{"dcCode":"22","itemNo":"3456",...,"sectionName":"食品课"},....,可能有几百条这样的{}, 然后,我创建了一个数组var values=new Array, 用push把这些jsonstr都放进去,最后,我用ajax的dataType:json,post方法把这些数据传到后台,可是,后台是springmvc,@RequestBody(value="/save",method="post"), 可是,当我用String[] values来接收传过来的json参数的时候,却总是null,不知道到底是怎么回事儿,请教大家,都是用什么样的方法来处理这样传输多条json数据到后台的?如果我的思路是对的,能否把这个代码正确的告诉我?如果有更好的方法,请回答。非常感谢。 为了更好的说明问题,我把代码贴出来,如下 ``` function submit(){ debugger; var n=$("#countnumber").text(); var i=0; for(var a=0;a<n;a++){ var saveData=new Array(); var arr1=$('.item p').find('input:text'); var arr2=$('.item p').find('input:checkbox'); for(i=0;i<arr1.length;i++){ saveData.push((arr1).eq(i).val()); }; for(var j=0;j<arr2.length;j++){ saveData.push((arr2).eq(j).val()); }; }; function User(userId,userName,userPwd,memo,addDate,modifyDate,addUserId){ this.userId=saveData[1]; this.userName=saveData[2]; this.userPwd=saveData[3]; this.memo=saveData[4]; this.addDate=saveData[5]; this.modifyDate=saveData[6]; this.addUserId=saveData[7]; }; var user=new User(); var users=new Array(); users.push(user); $.ajax({ type: "post",//数据发送的方式(post 或者 get) url: "insert.do",//要发送的后台地址 data: {"user":JSON.stringify(users)}, dataType: "text",//后台处理后返回的数据格式 success:function (data){ alert(jQuery.parseJSON(data).msg); } }); } ``` 以上是前台的,接下去是后台的 ``` @ResponseBody @RequestMapping(value = "/insert.do", method = RequestMethod.POST) public Map insertUsers(HttpServletRequest request, @RequestBody String users) throws Exception{ users=URLDecoder.decode(users, "utf-8"); ObjectMapper mapper = new ObjectMapper(); //这里用了jackson,自己看看代码,很简洁的 JavaType javaType=mapper.getTypeFactory().constructParametricType(List.class,User.class); List<User> list = mapper.readValue(users, javaType); String msg=userService.insertUsers(list); Map map = new HashMap(); map.put("msg", msg); return map; } ``` 然后,后台的效果截图如下 ![图片说明](https://img-ask.csdn.net/upload/201612/18/1482061394_446729.png) 传到后台的Controller的,数据显示如下 ![图片说明](https://img-ask.csdn.net/upload/201612/18/1482061427_169271.png) 然后,进一步调试,出现错误如下 ![图片说明](https://img-ask.csdn.net/upload/201612/18/1482061332_952640.png) 请问,这个错误到底是什么原因造成的。是500错误。请高手帮助啊!

Spring Mvc对象接收数组信息的问题。

对象有两个属性 分别为 name(String) 与values(List<String>)。前台一个文本框,一堆复选框。 用ajax发送到后台,取值出现了问题。简单代码如下: JS: var array = ["0a","1a","3c"]; var data ={ name:"张三",values:array}; $.ajax({ url : "无视", data:data, type:"post", dataType:"json", success:function(result){ } }); 后台: @ResponseBody @RequestMapping(value = "/无视",method = RequestMethod.POST) public boolean addCourse(HttpServletRequest request,Job job) {} 会报java.lang.NumberFormatException: For input string: "" 这个错,求大神解答,谢谢

多个input 怎么上传多个图片,用ajax发送,后台用springmvc接收

<form enctype="multipart/form-data"method="POST"> Send thisfile1: <input name="file1"type="file"/> Send thisfile2: <input name="file2"type="file"/> Send thisfile3: <input name="file3"type="file"/> <input type="submit"value="Send File"/></form> --------------------------------------------------------------- var formData = new FormData(); formData.append('file', $('#file1')[0].files[0]); formData.append('file', $('#file2')[0].files[0]); formData.append('file', $('#file3')[0].files[0]); formData.append("fname",fname); formData.append("fprice",fprice); formData.append("fdetail",fdetail); formData.append("meterial",meterial); $.ajax({ url : "./insert", type : "POST", data :formData, async : true, cache : false, contentType : false, processData : false, success : function(data) { if(data=="success"){ alert("添加成功!") window.location.href="#" }else{ alert("添加失败!") } } }); 请问后台springmvc的controller怎么接收,我试了好就都不行。

SPRING3MVC接收JSON参数的问题 JSON解析为空

我想把前台页面里一个JSON结构的数据传到controller,尝试了数十次,由map到list到string都无法识别。 JSON的数据结构如下[code="java"]{"info":{"templateName":$("#templateName").val(),"templateNo":"tmp156464"}}[/code] 调用方式是通过jquery的ajax调用spring后台,[code="java"]$("#btSaveTemplate").click(function() { // alert($("#templateName").val()); var data = {"info":{"templateName":$("#templateName").val(),"templateNo":"tmp156464"}}; var data2 = {"templateName":$("#templateName").val()}; $.ajax({ type: "get",//使用get/post方法访问后台 dataType: "json",//返回json格式的数据 url: "lotty/add",//要访问的后台地址 data: data, success: function(msg){//msg为返回的数据,在这里做数据绑定 if(msg == '1'){ alert('操作成功'); location.reload(); } }, error: function(jqXHR, textStatus, errorThrown) { alert("error:" + textStatus + " exception:" + errorThrown); } });[/code] 后台spring确实收到了请求,并且执行了相应的方法,如下: [code="java"]@ResponseBody @RequestMapping(value="/add", method=RequestMethod.GET) public String doAdd([color=red][b]String info[/b][/color],Model model) throws Exception;[/code] 红色粗体的地方,用String接收是null,改用List和HashMap都不行,后来在SPRING的JAR包中,翻到一个MappingJacksonJsonView,尝试了下,还是空值。之后,我在方法里加了HttpServletRequest参数,郁闷的是:request里面的parameter部分为空 我想可能是SPRING注入处理JSON类的地方出错了,但是这个也不太可能。因为我传最基本的纯key-value结构的JSON数据,后台能成功捕获到(我的做法比较笨,前台有多少个key,controller方法里有多少个对应参数的那种) 这是我SPRING的相关配置:[code="java"]<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>[/code] 然后注入:[code="java"]<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref local="mappingJacksonHttpMessageConverter"/> </list> </property> </bean>[/code] 到此,实在不知道其他的解决方法了。 我的想法是,在实际应用中如果做批量插入的话,可以一次提交一个大的JSON数据,在后台里解析成JSONObject对象,再逐步取值。试了大半天,没有结果,上来问问大家,SPRING3里面JSON做参数的一些经验。

spring mvc + ajax http请求415问题

今天在写一个功能的时候碰见这样一个问题: controller需要接收一个参数,这个参数是一个类,上代码: 后台Java代码: ``` public class DiagnosisForm { private String id; private List<CheckoutForm> checkoutForm; //get/set方法省略 public static class CheckoutForm{ private String id; private String num; //get/set方法省略 } } ``` controller 接口: ``` public CommonResponse createRecords(@RequestBody DiagnosisForm diagnosisForm, HttpSession session,HttpServletRequest request){ //其他业务操作 return new CommonResponse(true); } ``` 前端ajax请求: ``` var data = { patientId: patientId, mainsuit: mainsuit, presentill: presentill, historyill: historyill, look: look, diagnose: diagnose, syndrome: syndrome, advice: advice, checkoutForm: checkList } console.log(data); $.ajax({ url: ctx + '/diagnosis/createRecords.do', type: 'post', async: false, contentType: 'application/json', data: data, dataType: 'json', success: function (result) { console.log(result); } }) ``` 请求时,前段控制台报错,提示415 ,我测试了一下就是checkoutForm这个参数接收不到; 求大神解决,急!急!急!

dva的fetch请求如果是post类型,springmvc作为后台该如何接收并返回数据?

fetch请求如下(前段UI框架是antd): 1.导航栏上点击Uers按钮,跳转至/users ```javascript <Menu.Item key="/users"> <Link to="/users"><Icon type="bars" />Users</Link> </Menu.Item> ``` 2.路由跳转控制 ```javascript function RouterConfig({ history }) { return ( <Router history={history}> <Route path="/" component={IndexPage} /> <Route path="/users" component={Users} /> </Router> ); } ``` 3.上面的Users控件(component)如下 ```JavaScript function Users({ location }) { return ( <MainLayout location={location}> <div className={styles.normal}> <UsersComponent /> </div> </MainLayout> ); } ``` 4.最终地址会跳转到一个fetch方法中,该方法会调用yield call来执行一个请求,具体如下 ``` *fetch({ payload: { page = 1 } }, { call, put }) { const { data, headers } = yield call(usersService.fetch, { page }); yield put({ type: 'save', payload: { data, total: parseInt(headers['x-total-count'], 10), page: parseInt(page, 10), }, }); }, ``` 5.yield call方法里面的usersService.fetch方法如下(PAGESIZE目前是常量) ``` export function fetch({ page }) { return request('/api/user/userList', { method: 'POST', headers: { //'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 'Content-Type': 'application/json', }, body: { _page: { page }, _limit: { PAGE_SIZE }, }, }); // return request(`/api/user/userList?_page=${page}&_limit=${PAGE_SIZE}`); } ``` 6.request.js ``` import fetch from 'dva/fetch'; function parseJSON(response) { return response.json(); } function checkStatus(response) { if (response.status >= 200 && response.status < 300) { return response; } const error = new Error(response.statusText); error.response = response; throw error; } export default async function request(url, options) { console.log(1232131); console.log(options); const response = await fetch(url, options); // .then(checkStatus); // checkStatus(response); // const data = await response.json(); const ret = { data, headers: {}, }; if (response.headers.get('x-total-count')) { ret.headers['x-total-count'] = response.headers.get('x-total-count'); } return ret; } ``` 7.后台springmvc接收数据的方法 ``` //7.后台springmvc接收数据的方法 @Controller @RequestMapping("/user") public class UserController { private static final Logger logger = LoggerFactory.getLogger(UserController.class); @Autowired private UserService userService; @RequestMapping(value = "/userList") //@ResponseBody public void userList(final HttpServletRequest request, ModelMap modelMap) throws Exception{ String page = request.getParameter("_page"); String limit = request.getParameter("_limit"); List<CustBaseInfo> users = userService.getUserList(new CustBaseInfoExample()); modelMap.put("data", users); } } ``` **备注: 1.如果fetch方法用的是GET请求,我把参数拼接在URL后面是没有问题的,后台可以接收到,但是这种情况下,后台如何将数据返回给dva框架,我现在是将返回结果users放在了modelmap当中,但前台还是获取不到数据 2.如果fetch是post请求,前台连数据都发不出,我是f12下看netWork就没有数据发送** ![post请求时,后台接受到的数据,为null](https://img-ask.csdn.net/upload/201704/16/1492309110_210835.png) ![前台发送请求](https://img-ask.csdn.net/upload/201704/16/1492309143_988102.png) ![前台发送请求](https://img-ask.csdn.net/upload/201704/16/1492309165_929215.png) ![响应数据没有](https://img-ask.csdn.net/upload/201704/16/1492309234_633478.png)

spring前台传送json格式字符串到后台问题

前台代码: $.ajax({ url : url, type : "POST", dataType : "jsonp", contentType : 'application/json;charset=UTF-8', data : {"loanApplication":loanApplication}, success : function(msg) { alert("success"); }, error : function(e) { alert("error ----------"); } }); 后台代码: @RequestMapping(value="/apply") @ResponseBody public ResultBean<LoanApplication> apply(@RequestBody LoanApplication loanApplication,ModelMap map,HttpServletRequest req,HttpServletResponse res){ try { req.getParameter("loanApplication"); req.getParameter("loanApplication[userId]"); req.getAttribute("loanApplication"); System.out.println("**********connect test successfully******"+loanApplication); log.info(loanApplication.toString()); String key = req.getSession().getId() + CacheKey.CAPTCHA_CODE; getCache().remove(key); ResultBean<LoanApplication> resultBean = (ResultBean<LoanApplication>) sendRemotePostRequest(REMOTE_SERVICE_URL,"BWF10004",loanApplication); return resultBean; } catch (Exception e) { log.error(e.getMessage()); } return null; } 错误描述: org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/octet-stream' not supported

传到后台的json数据,如何让springmvc进行解析?

为了更好的说明问题,我把代码贴出来,如下 ``` function submit(){ debugger; var n=$("#countnumber").text(); var i=0; for(var a=0;a<n;a++){ var saveData=new Array(); var arr1=$('.item p').find('input:text'); var arr2=$('.item p').find('input:checkbox'); for(i=0;i<arr1.length;i++){ saveData.push((arr1).eq(i).val()); }; for(var j=0;j<arr2.length;j++){ saveData.push((arr2).eq(j).val()); }; }; function User(userId,userName,userPwd,memo,addDate,modifyDate,addUserId){ this.userId=saveData[1]; this.userName=saveData[2]; this.userPwd=saveData[3]; this.memo=saveData[4]; this.addDate=saveData[5]; this.modifyDate=saveData[6]; this.addUserId=saveData[7]; }; var user=new User(); var users=new Array(); users.push(user); $.ajax({ type: "post",//数据发送的方式(post 或者 get) url: "insert.do",//要发送的后台地址 data: {"user":JSON.stringify(users)}, dataType: "text",//后台处理后返回的数据格式 success:function (data){ alert(jQuery.parseJSON(data).msg); } }); } ``` ``` function submit(){ debugger; var n=$("#countnumber").text(); var i=0; for(var a=0;a<n;a++){ var saveData=new Array(); var arr1=$('.item p').find('input:text'); var arr2=$('.item p').find('input:checkbox'); for(i=0;i<arr1.length;i++){ saveData.push((arr1).eq(i).val()); }; for(var j=0;j<arr2.length;j++){ saveData.push((arr2).eq(j).val()); }; }; function User(userId,userName,userPwd,memo,addDate,modifyDate,addUserId){ this.userId=saveData[1]; this.userName=saveData[2]; this.userPwd=saveData[3]; this.memo=saveData[4]; this.addDate=saveData[5]; this.modifyDate=saveData[6]; this.addUserId=saveData[7]; }; var user=new User(); var users=new Array(); users.push(user); $.ajax({ type: "post",//数据发送的方式(post 或者 get) url: "insert.do",//要发送的后台地址 data: {"user":JSON.stringify(users)}, dataType: "text",//后台处理后返回的数据格式 success:function (data){ alert(jQuery.parseJSON(data).msg); } }); } ``` 以上是前台的,接下去是后台的 ``` @ResponseBody @RequestMapping(value = "/insert.do", method = RequestMethod.POST) public Map insertUsers(HttpServletRequest request, @RequestBody String users) throws Exception{ users=URLDecoder.decode(users, "utf-8"); ObjectMapper mapper = new ObjectMapper(); //这里用了jackson,自己看看代码,很简洁的 JavaType javaType=mapper.getTypeFactory().constructParametricType(List.class,User.class); List<User> list = mapper.readValue(users, javaType); String msg=userService.insertUsers(list); Map map = new HashMap(); map.put("msg", msg); return map; } ``` 然后,后台的效果截图如下 ![图片说明](https://img-ask.csdn.net/upload/201612/18/1482069725_74209.png) 传到后台的Controller的,数据显示如下 ![图片说明](https://img-ask.csdn.net/upload/201612/18/1482069673_84864.png) 然后,进一步调试,出现错误如下 ![图片说明](https://img-ask.csdn.net/upload/201612/18/1482069716_404734.png) 请问,这个错误到底是什么原因造成的。是500错误。请高手帮助啊!正确的方法是什么呢?

求教:使用FormData存放表单数据,Controller该如何接收参数

首先这是我的表单: ``` <form method="post" id="addproductform" enctype="multipart/form-data"> <h1>添加商品</h1> 商品名称:<input type="text" id="goodsname"/> <br/> 商品图片:<input type="file" id="goodsphoto"/> <br/> <br/><br/> 商品类别<br/> 一级类别: <select id="catalogue_select1"> </select> 二级类别: <select id="catalogue_select2"> </select> 三级类别: <select id="catalogue_select3"> <option>三级电器</option> <option>三级女装</option> <option>三级男装</option> </select> <br/><br/> ·商品规格设置<br/><br/> <div id="goodsItemDiv"> <span class="attribute">内存</span>: <span class='unchecked' name='1' checked='false' onclick='change(this);'>4G</span> <span class='unchecked' name='1' checked='false' onclick='change(this);'>8G</span> <span class='unchecked' name='1' checked='false' onclick='change(this);'>16G</span> <span class='unchecked' name='1' checked='false' onclick='change(this);'>32G</span> <span class='unchecked' name='1' checked='false' onclick='change(this);'>64G</span> </div> <br/> <br/> <div> <span class="attribute">颜色</span>: <span class='unchecked' name='2' checked='false' onclick='change(this);'>黑色</span> <span class='unchecked' name='2' checked='false' onclick='change(this);'>银色</span> <span class='unchecked' name='2' checked='false' onclick='change(this);'>深空灰</span> </div> <br/> <span class="attribute">商品价格</span>:<input type="text" id="goodsprice"/><br/><br/> <span class="attribute">商品库存</span>:<input type="text" id="goodsstock"/> <div> <br/> <b>提示:</b><span id='resultSpan'></span> <br/> <input type="button" id="additem" onclick='addItem()' value="添加商品规格"/><br/> <input type="button" onclick='addThisProduct()' value="添加商品"/> </div> </form> ``` 主要就是里面有个文件上传: ``` <input type="file" id="goodsphoto"/> ``` 现在我希望将表单中的图片以及其它文本信息都传递到后台中,但是!我的表单中的文本信息比如商品名称等等,**我并不打算直接提交至后台中,而是在JavaScript中把填写的数据处理好后再写入到FormData中,之后会通过Ajax发送FormData给Controller**,所以我并没有直接写: ``` form.append("product",$("#addproductform")[0]); ``` 我是这么向FormData填充数据的: ``` var form = new FormData(); <!-- 这里我想获得表单中,文件上传的部分T^T我实在不知道怎么搞才这么写的 --> form.append("productPhoto",$("#addproductform input")[1]); <!-- productName、catalogueI、catalogueII这些都是我处理好后的数据--> form.append("productName", productName); form.append("catalogueI", catalogueI); form.append("catalogueII", catalogueII); form.append("catalogueIII", catalogueIII); ``` 接着,我在Controller中,是这么接收的: ``` @ResponseBody @RequestMapping("/addproduct") public int addProduct(HttpServletRequest request,@RequestParam("productPhoto") MultipartFile productPhoto) throws IOException { String productName = request.getParameter("productName"); String catalogueI = request.getParameter("catalogueI"); String catalogueII = request.getParameter("catalogueII"); String catalogueIII = request.getParameter("catalogueIII"); String originalFilePath = productPhoto.getOriginalFilename(); System.out.println("productName is: "+productName); System.out.println("catalogueI is: "+catalogueI); System.out.println("catalogueII is: "+catalogueII); System.out.println("catalogueIII is: "+catalogueIII); System.out.println("originalFilePath is: "+file.getOriginalFilename()); return 1; } ``` 但是就报错了: Resolved [org.springframework.web.multipart.support.MissingServletRequestPartException: Required request part 'productPhoto' is not present] 说是我的productPhoto字段不存在?为啥会这样啊? 总的来说,我的问题就是: 请问各位大神们,我到底应该怎么写呢?主要就是我并不是把表单的所有填写的数据都直接提交的,而是经过JavaScript处理后,连并表单中的图片一起提交,此时我的前端、后端该怎么写?我写的都有哪里的错误呢? # 真心请求帮助/(ㄒoㄒ)/~~而且真的很抱歉,我的C币没了,我问题太多了

request.getParameter后台取不到值

下边的是form代码 <form name="login_form" role="form" action="user?action=login" method="POST" onsubmit="return isValidate(login_form)"> <fieldset> <div id="legend"> <legend class="caption">登录</legend> </div> <div class="form-group"> <label for="username">用户名</label> <input type="text" class="form-control " name="username" id="username" placeholder="Enter email"> </div> <div class="form-group"> <label for="password">密码</label> <input type="password" class="form-control" name="password" id="password" placeholder="Password"> </div> <div class="form-group"> <button type="submit" class="btn btn-success">登录</button> </div> </fieldset> </form> 下边是后台servelet代码 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); String action = request.getParameter("action"); //这的action就能取到值 if(action.equals("login")){ String username = request.getParameter("username"); String password = request.getParameter("password"); //这的username和password就取不到值,为什么啊? User u = userservice.login(username, password); if(u!=null){ if(u.getIsDelete()==0){ request.getSession().setAttribute("user", u); response.sendRedirect("user?action=index"); }else{ request.getSession().setAttribute("userIsDeleMsg", "该用户已被禁用,无法登录!"); request.getRequestDispatcher("login.jsp").forward(request, response); } }else { request.getSession().setAttribute("msg", "验证失败,请重新输入用户名或密码!"); response.sendRedirect("Login.jsp"); } }else if(action.equals("index")){ //跳转到首页 request.getRequestDispatcher("/index.jsp").forward(request, response); } }

vue ajax Context-type 为 application/x-www-form-urlencoded,Java后端HttpServletResponse.setHeader应该怎样设置

#vue ajax代码 ![图片说明](https://img-ask.csdn.net/upload/202004/18/1587209897_723211.png) #浏览器报错 network 接口信息 ![图片说明](https://img-ask.csdn.net/upload/202004/18/1587209951_744551.png) #下面的response.setHeader()怎样设置 ``` public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)req; HttpServletResponse response = (HttpServletResponse) res; String originHeader = request.getHeader("Origin"); response.setHeader("Access-Control-Allow-Origin", originHeader); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "1"); response.setHeader("Access-Control-Allow-Headers", "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, " + "Cache-Control, Expires, Content-Type, X-E4M-With,userId,token"); response.setHeader("Access-Control-Allow-Credentials", "true"); response.setHeader("Content-Language", "zh-CN,zh"); response.setHeader("XDomainRequestAllowed","1"); //response.setHeader("Content-Disposition", "form-data"); response.setContentType("application/x-www-form-urlencoded;charset=UTF-8");//本行代码或者上行怎么设置 chain.doFilter(req, res); } ```

springmvc 415Unsupported Media Type

我的ajax ``` $('.submit').click(function(){ var userName = $('.userName').val(); var password = $('.password').val(); var json={ "userName":userName, "password":password }; $.ajax({ url:"/jsonTest.do", contentType:"application/json", dataType:"json", type:"POST", data:JSON.stringify(json), success:function (data) { console.log(data); }, error:function (data) { alert("失败"); } } ) }) ``` 后台的controller ``` @RequestMapping(value = "/jsonTest.do") public void jsonTest(@RequestBody User user,HttpServletRequest request,HttpServletResponse response) { System.out.println("jsonTest:userName" + user.getUserName()); if (blogService.selectByPrimaryKey(1) == null) { addOneBlog(1); } BlogWithBLOBs blogWithBLOBs = blogService.selectByPrimaryKey(1); JsonUtil.toJSON(blogWithBLOBs,response); } ``` 问题来了,我添加了@RequestBody标签就会报415Unsupported Media Type.当我把这个注解去掉后,就能正常取值了。为什么呢,我记得我学的时候都说的是用这个标签来接收json数据啊

springMVC后台的值无法通过ModelAndView的addObject传到前台

我将studentList放入request作用域中jsp可以访问,为什么通过ModelAndView的addObject方法放入后,前台就无法访问。 后台方法: @RequestMapping("/studentList") public ModelAndView studentList(HttpServletRequest request) throws Exception{ ModelAndView mav = new ModelAndView("studentList"); // List<Student> studentList = iStudentService.queryAllStudent(); // System.out.println(studentList.size()); // request.setAttribute("studentList", studentList); mav.addObject("studentList", iStudentService.queryAllStudent()); mav.addObject("xx", "xx"); // mav.addObject("studentList",studentList); return mav; } 前台代码 <body> ${xx} <table border="1"> <tr> <td>id</td><td>name</td><td>birthday</td><td>creatTime</td> </tr> <c:forEach items="${studentList}" var="student"> <tr> <td>${student.id}</td> <td>${student.name}</td> <td>${student.birthday}</td> <td>${student.createTime}</td> </tr> </c:forEach> </table> </body>

sprig mvc+ajaxFileUpload实现多文件上传,为什么只能上传第一张

<input type="file" name="imageFile" id="imageFile"> <input type="file" name="imageFile" id="imageFile1"> <input type="file" name="imageFile" id="imageFile2"> ////////////////////////////////////////////////////////////////////////////////// function ajaxFileUpload() { $.ajaxFileUpload({ url : '${pageContext.request.contextPath}/commonController/fileUpload', type : 'post', secureuri:false, fileElementId : ['imageFile','imageFile1','imageFile2'], dataType : 'JSON', success : function(data, status) { //去掉<pre></pre>标签 var start = data.indexOf(">"); if(start != -1) { var end = data.indexOf("<", start + 1); if(end != -1) { data = data.substring(start + 1, end); } } //转化为JSON对象 data=eval('('+data+')'); if (data.success) { $("#le_url").val(data.errorinfo); $("#bu_url").val(data.errorinfo); $("#co_url").val(data.errorinfo); alert(data.errorinfo); $.messager.alert('<spring:message code="hint"/>', data.msg, 'info'); $("#showPic").attr("src",data.errorinfo); $("#showPic").show(); $("#showPic1").show(); $("#showPic2").show(); }else{ $.messager.alert('<spring:message code="hint"/>', data.msg, 'info'); } }, }); return false; } //////////////////////////////////////////////////////////////////////////////// @RequestMapping(value = "/fileUpload", method = RequestMethod.POST) @ResponseBody public Json upload(@RequestParam(value="imageFile")MultipartFile[] files, HttpServletRequest req) throws IOException { String temppath = "/image"; Json j = new Json(); // 构建文件名称multipartFile for (MultipartFile file : files) { String oldName = file.getOriginalFilename(); // 获取文件的后缀 String suffix = oldName.substring(oldName.indexOf('.')); //String name = String.valueOf(System.currentTimeMillis()).concat(suffix); String name = oldName; String path = req.getSession().getServletContext() .getRealPath(temppath); try { File filepath = new File(path); if (!filepath.exists()) { filepath.mkdir(); // 创建目录 } OutputStream os = new FileOutputStream(filepath.getPath() + "/" + name); InputStream is = file.getInputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = is.read(buffer)) != -1) { os.write(buffer, 0, len); } os.flush(); os.close(); is.close(); j.setSuccess(true); j.setMsg("上传成功"); } catch (Exception e) { j.setMsg("上传失败"); j.setSuccess(false); e.printStackTrace(); } j.setErrorinfo(req.getContextPath() + temppath + "/" + name); j.setObject(path + "\\" + name); } return j; }

post提交form表单到springMVC,不能跳转问题

**项目结构: ** ![图片说明](https://img-ask.csdn.net/upload/201812/14/1544768206_941826.png) 1. jsp页面 **index.jsp** ``` <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>首页</title> </head> <body> <a href="/sdkapp/init">去往登录页</a> </body> </html> ``` **login.jsp** ``` <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>登录页</title> <script src="<%=request.getContextPath()%>/js/jquery-1.7.2.js" type="text/javascript"></script> </head> <body> <form id="frm"> 用户id: <input type="text" name="uid"><br><br> 用户名: <input type="text" name="username"><br><br> 密 码: <input type="password" name="password"><br><br> <input type="submit" id="btn" value="登录"> </form> <script type="text/javascript"> $("#btn").click(function () { console.log(getFormJson(frm)); $.ajax({ url: "${pageContext.request.contextPath}/sdkapp/login", type:"POST", data: getFormJson(frm), contentType:"application/json;charset=utf-8", success:function(data){ console.log(data) }, error:function(data){ console.log(data) } }); }) function getFormJson(frm) { //frm:form表单的id var o = {}; var a = $("#"+frm).serializeArray(); $.each(a, function() { if (o[this.name] !== undefined) { if (!o[this.name].push) { o[this.name] = [ o[this.name] ]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; } </script> </body> </html> ``` **success.jsp** ``` <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>登录成功页</title> </head> <body> <h1>登录成功</h1> </body> </html> ``` 2. 配置文件 **springmvc.xml** ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--配置默认的servlet处理器,处理静态资源加载--> <mvc:default-servlet-handler/> <!--配置包扫描controller--> <context:component-scan base-package="controller"/> <mvc:annotation-driven/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/pages/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans> ``` **web.xml** <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <servlet> <servlet-name>springMvc</servlet-name> <!--加载前端控制器--> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app> 3.java代码 **Login.java** ``` package controller; import controller.vo.User; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @RestController @RequestMapping(value = "/sdkapp") public class Login { @RequestMapping(value = "/init") public ModelAndView casdkbindInput(){ ModelAndView view = new ModelAndView("/login"); return view; } @RequestMapping(value = "/login",method = {RequestMethod.POST},consumes = "application/json;charset=utf-8") public ModelAndView testJson(@RequestBody User user) throws Exception { System.out.println(user); ModelAndView view = new ModelAndView("/success"); return view; } } ``` **vo/User.java** ``` package controller.vo; import java.io.Serializable; public class User implements Serializable { private String uid; private String username; private String password; public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User{" + "uid='" + uid + '\'' + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } } ``` 问题是 jq post请求到后台,后台返回 view时,前端接收不到? 附上demo地址:[百度云盘](https://pan.baidu.com/s/1edbTMGCw2wrhGKADY9x8XA "")

(小白求大牛)springboot和layui富文本编辑 上传图片后成功有提示,但是不回显。

首先,先上个代码吧。 html代码 ``` <textarea name="content" id="content" lay-verify="content" width="60" height="20" class="layui-textarea" ></textarea> ``` js代码 ``` <script> layui.use(['form','layedit',"add"], function(){ var form = layui.form; var layedit = layui.layedit; var coreNewInfoAdd = layui.add; layedit.set({ uploadImage:{ url:"/uploadImage",//接口 // url:"cms/coreNewsinfo/add.json",//接口 type:'post' //请求方式 } }); var index = layedit.build('content'); form.verify({ content:function (value) { layedit.sync(index); } }); coreNewInfoAdd.init(); }); </script> ``` 最后 控制层上传文件代码: ``` @RequestMapping("/uploadImage") @ResponseBody public Map<String,Object> upload(HttpServletRequest request,MultipartFile file) throws IOException { String path = request.getServletContext().getRealPath("uploadImage"); System.out.println("path="+path); String fileName = file.getOriginalFilename(); File filepath = new File(path,fileName); if(!filepath.getParentFile().exists()){ filepath.getParentFile().mkdirs(); } Map<String,Object> map = new HashMap<String,Object>(); file.transferTo(new File(path+File.separator+fileName)); map.put("msg","OK"); map.put("code",200); map.put("data",new HashMap<String,Object>(){ { put("src",path+File.separator+fileName); } }); return map; } ``` 代码都在这里,只是什么结果!是这样的: ![图片说明](https://img-ask.csdn.net/upload/202005/12/1589275126_23548.png) 然后 然后文件件里也有这个图片 :![图片说明](https://img-ask.csdn.net/upload/202005/12/1589275219_653655.png) 返回的Json数据: { "msg" : "OK", "code" : 200, "data" : { "src" : "C:\\Users\\admin\\AppData\\Local\\Temp\\tomcat-docbase.245804219136983412.8080\\uploadImage\\1.png" } } 啥都可以,就是搞不懂为啥富文本框中啥也没有,也不回显,可能是我太菜了,写的肯定不对。求求你们帮帮我。到底怎么才能解决这个回显的问题,不然的话存不到数据库里呀。

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

深入剖析Springboot启动原理的底层源码,再也不怕面试官问了!

大家现在应该都对Springboot很熟悉,但是你对他的启动原理了解吗?

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

你期望月薪4万,出门右拐,不送,这几个点,你也就是个初级的水平

先来看几个问题通过注解的方式注入依赖对象,介绍一下你知道的几种方式@Autowired和@Resource有何区别说一下@Autowired查找候选者的...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《Oracle Java SE编程自学与面试指南》最佳学习路线图2020年最新版(进大厂必备)

正确选择比瞎努力更重要!

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

字节跳动面试官竟然问了我JDBC?

轻松等回家通知

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

2020春招面试了10多家大厂,我把问烂了的数据库事务知识点总结了一下

2020年截止目前,我面试了阿里巴巴、腾讯、美团、拼多多、京东、快手等互联网大厂。我发现数据库事务在面试中出现的次数非常多。

立即提问
相关内容推荐