永发信息网

servlet无法获得ajax传过来的数据

答案:2  悬赏:50  手机版
解决时间 2021-03-21 13:42
这是jsp部分,很简单就是按按钮把数据传输过去;话说我上次大概是三天之前弄这个程序完全没问题啊<br>&lt;%@ page language=&quot;java&quot; import=&quot;java.util.*&quot;<br> contentType=&quot;text/html; charset=UTF-8 &quot; pageEncoding=&quot;UTF-8&quot;%&gt;<br>&lt;%<br> request.setAttribute(&quot;base&quot;, request.getContextPath()); //获得站点根目录<br>%&gt;<br>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot; &quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;<br>&lt;html&gt;<br>&lt;head&gt;<br>&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;<br>&lt;script type=&quot;text/javascript&quot; src=&quot;${base}/js/jquery-1.3.2.min.js&quot;&gt;&lt;/script&gt;<br>&lt;script type=&quot;text/javascript&quot;&gt;<br> $(document).ready( <br> function(){<br> $(&quot;#registerBT&quot;).click( <br> function(){ <br> var studentName=$(&quot;#studentName&quot;).val();<br> var passWard=$(&quot;#passWard&quot;).val();<br> $.ajax(<br> {<br> url:&quot;${base}/LoginServlet&quot;,<br> type:&quot;post&quot;,<br> data:&quot;username=&quot;+studentName+&quot;&amp;passward=&quot;+passWard,<br> dataType:&quot;json&quot;,<br> success:successInfo<br> }<br> ); <br> }<br> );<br> }<br>);<br> function successInfo(json){<br> var success=json.success;//tipDiv<br> if(success!=null){<br> alert(&quot;注册成功,请登录!&quot;);<br> window.location.href = &quot;welcome.jsp&quot;;<br> }<br> }<br> &lt;/script&gt;<br> &lt;title&gt;Insert title here&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>用户名 &lt;input type=&quot;text&quot; id=&quot;studentName&quot; name=&quot;studentName&quot; size=&quot;20&quot;&gt;&lt;br&gt;<br>密 码 &lt;input type=&quot;text&quot; id=&quot;passWard&quot; name=&quot;passWard&quot; size=&quot;20&quot;&gt;&lt;br&gt;<br>&lt;input type=&quot;button&quot; id=&quot;registerBT&quot; name=&quot;register&quot; value=&quot;注册&quot;&gt;  <br>&lt;/body&gt;<br>&lt;/html&gt; <br>这是相应的servlet代码<br>package servlets;<br>protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {<br>String name=(String) request.getAttribute(&quot;username&quot;);//这个地方我看了name是null<br><br> String address=(String) request.getAttribute(&quot;passward&quot;);<br>}
最佳答案
1. 将你js中获取到得username,password输出看是否有获取到值。
2. 请求type,dataType与实际发送的data不一致。
type:"post",
data:"username="+studentName+"&passward="+passWard,
dataType:"json",

a. 如果要使用你目前的data来传递值,建议修改为
    type: "get",
    data:"username="+studentName+"&passward="+passWard,
    [dataType]删掉该属性
b. 如果要使用json形式
     type: "post"/"get",
     data: "{'username':" + studentName+",'password':" + passWard + "}",
     dataType: "json"
希望能帮助你解决问题,如果不能请继续追问。
全部回答
1.原生ajax代码 get请求: //创建xhr,ie低版本不支持 var xhr = new xmlhttprequest(); //servlet地址 var url="/website01/index.view"; xhr.open("get", url, true); //xhr处理事件,异步 xhr.onreadystatechange = function() { if (xhr.readystate == 4 && xhr.status == 200) { //在这里进行相关处理,通过xhr.responsetext获取后台反馈的文本 ... } }; //xhr发送数据 xhr.send(); post请求: post请求需注意要设置请求头(setrequestheader) xhr.setrequestheader(“content-type”, “application/json”);针对json数据 在xhr.send()中写需要发送的json数据,例如: xhr.send(json.stringify(data));1 2.servlet基础知识 servlet是用java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态web内容。狭义的servlet是指java语言实现的一个接口,广义的servlet是指任何实现了这个servlet接口的类,一般情况下,人们将servlet理解为后者。 servlet运行于支持java的应用服务器中(tomcat)。从原理上讲,servlet可以响应任何类型的请求,但绝大多数情况下servlet只用来扩展基于http协议的web服务器。 在java中,新建servlet类继承自httpservlet,重写doget方法处理get请求,重写dopost方法,处理post请求,通过 printwriter out = response.getwriter();通过out.write()输出数据到前台的xhr.responsetext,通过out.println()输出页面。 3.servlet处理请求 处理请求通过httpservletrequest类型,get请求时查询字符串直接编码在请求链接中,格式为url+”?key1=value1&key2=value2”,通过getparameter(“key1”)来获取值。 4.前后端传递json数据 前端传递json给servlet //程序片段,请求头不能少 xhr.setrequestheader("content-type", "application/json"); var data={"name":"tom","age":20}; xhr.send(json.stringify(data));1234 后端接受前端传递的json数据 //读取请求传递过来的json格式数据,返回json字符串 private string readjsondata(httpservletrequest request) { stringbuffer json=new stringbuffer(); string linestring=null; try { bufferedreader reader=request.getreader(); while ((linestring=reader.readline())!=null) { json.append(linestring); } } catch (exception e) { system.out.println(e.tostring()); } return json.tostring(); } string json=readjsondata(request); //将json字符串转为java对象 gson gson=new gson(); person person=gson.fromjson(json, person.class); 说明 gson为google处理json格式数据的jar包,可将json字符串转换为对应的java对象,也可将相应的java对象序列化为json字符串。person为定义的类,包含name和age字段。readjsondata函数将前端请求中的json数据转为java对象。 后端输出json到前端 //后端程序片段,传递json数据给前端 person person=new person("tom",20); gson gson=new gson(); string json=gson.tojson(person); out.write(json); //前端程序片段,通过ajax获取json数据 var xhr = new xmlhttprequest(); var url="/website01/index.view"; xhr.open("get", url, true); xhr.onreadystatechange = function() { if (xhr.readystate == 4 && xhr.status == 200) { //获取后台传递过来的字符串并转换为json var responsejson=json.parse(xhr.responsetext); var name=responsejson.name; var age=responsejson.age; } }; xhr.send(null); 5.表单数据的处理
12345 表单数据可以直接在form属性中定义请求方法和请求路径,在点击submit按钮后数据会直接提交并跳转。如上的表单,在点击按钮提交后,后台使用request.getparameter(“key”)获取数据,key值为input标签的name值,而非id值.,即通过以下代码获取表单提交的数据。 string name=request.getparameter("name"); string age=request.getparameter("age");12 以上。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有什么办法把一段直播视频直接转入电脑
英利浦这个地址在什么地方,我要处理点事
中国民间剪纸艺术就是一种融物质文明和精神文
比如我问个日本人<您来自日本哪里>用英语怎么
广药集团有没有生产销售红色罐装包装的王老吉
FX3U-ENET-L Configuration Tool软件有没有可
买房整栋楼后面有河前面有塘好不好
用什么成语来形容贾宝玉
单选题下列各句中,没有错别字的一句是A.你看
这是用什么拼图软件拼的?
麦凯士超薄移动电源对手机电池有影响么
皇家花坊这个地址在什么地方,我要处理点事
今天卖iphone6s面交的,结果那人抢了手机就跑
linux 系统下 查看ip命令?
车险报了案没销案出了事故在报案还会受理吗
推荐资讯
单选题我国气象部门对暴雪天气作出了正确的预
关于松花江的诗歌,仿写松花江上开头几句.....
im at home now. im retired. i was a factor
房贷第二年会重新按照本金核算利息吗
五羊本田幻影150改装什么牌子的化油器最好
麻城二室一厅的租房一年多少钱带齐家电
单选题鉴别纯碱、石灰石、芒硝、石膏四种固体
dnf深渊怎么看是不是非常困难
二级域名网站如何赚钱?
小米钱包余额可以自动还小米贷款吗
华硕笔记本自带键盘失灵,重启后才恢复正常
古柳线/SL28(路口)这个地址在什么地方,我要
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?