ajax 传参 向servlet发送请求,传参为null,404问题,web.xml配置问题

毕设开始做网页的这部分东西了,想着肯定有伙伴跟我一样有困难,来晒下我走过的坑。

jquery-2.1.4.min.js是引用的网上的连接。

<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
 $.ajax({
			 contentType: 'text/json,charset=utf-8', //加上这句,后台会接收参数为null,应该删去
		dataType:"json",
         //传递的地址
         url: ".././SSaveFoodKind",
         //传递的方式
      	 type:'post',
         //传递的参数     
      	 data: {kindname:kindName},
         //返回的结果
         success: function (result) {
        	 alert(result);
         },error:function(){ //页面不正常
            alert("您所请求的页面有异常。");
         }
     });

</script>

说下在这里遇到的问题,刚开始写上这里就开始404,在开发者工具里看到报错,如图
在这里插入图片描述

我以为是自己引入jquery-2.1.4.min.js的问题,可是另一个功能就可以运行。 后来找同学帮忙,起初看我的url地址,我自认为没有问题 。(这里说下小问题,引用地址的时候要写servlet-name中的名字,下面是一样的,但具体是什么区别,身为小白的我也不知道)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>AIR</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
     <!-- 添加饮食种类 -->
   <servlet>
    <display-name>SSaveFoodKind</display-name>
    <servlet-name>SSaveFoodKind</servlet-name>
    <servlet-class>scontroller.SSaveFoodKind</servlet-class>
  </servlet>
   
  <servlet-mapping>
    <servlet-name>SSaveFoodKind</servlet-name>
    <url-pattern>/SSaveFoodKind</url-pattern>
  </servlet-mapping>
</web-app>

后来找到问题,却是配置的问题,不过上面的代码是正确的。问题是我的web.xml的位置有问题,因为是我自己建的。
错误示范如下图:
在这里插入图片描述
图里web.xml文件是在lib文件夹里面的,这样可能就导致地址错误。
正确的位置如下图:(和lib文件夹在同一个等级)
在这里插入图片描述
这下就可以用了。

接下来说后台传中文,jsp接收为乱码的问题,正常情况下,写下面两行代码就没有问题了,but…

response.setContentType("text/html;charset=utf-8"); 
response.setCharacterEncoding("utf-8");//防止中文乱码

反正有中文的地方,servlet就出现这两句就对了。

现在说我的But
(生活不止正常的代码流程,还有许多的but…),先看代码

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			PrintWriter out = response.getWriter();//举例
		 	response.setContentType("text/html;charset=utf-8"); 
			response.setCharacterEncoding("utf-8");//防止中文乱码
			System.out.println("lalalal    at service");
			 boolean result;
			  String kindName = "水果";
			  System.out.println("。。。。。。。。。。Name  "+kindName);
			  String saveResult=null;
			  ISFoodKindService foodKindService = new SFoodKindService();
			   result = foodKindService.addFoodKindInfo(kindName);   
			   System.out.println("result   "+result);
			   Gson gson = new Gson();
			   if(result){
				   saveResult ="添加饮食种类成功";
				   System.out.println(saveResult);
			   }else{
				    saveResult ="afff添加饮食种类失败";
			   }
				try{
//					   response.getWriter().write(saveResult); 
				out.write(gson.toJson(saveResult));
				}catch (Exception e) {
				     // TODO Auto-generated catch block
				     e.printStackTrace();
				    }finally {			
				    	response.getWriter().close(); 
						}
	}

我不知道从哪里参考的代码,一般写
response.getWriter().write(saveResult);
但是参考的老兄写的是
PrintWrite out = response.getWriter();
out.write(gson.toJson(saveResult));
然后我的中文就依旧乱码显示,把上面那位老兄写的换成一般的response.getWriter().write(saveResult); 中文乱码问题就解决了。
二者有啥不同,我也不晓得
这篇文章介绍一丢丢https://www.cnblogs.com/zhwl/p/3623688.html

最后友情提示一下:ajax中 dataType:“json” 指定返回值为json,在servlet中如果不返回json,在jsp页面会执行ajax中的error操作的。

小白目前还是小白,文章里的问题希望路过的大佬解答,感激不尽(祝大佬写代码无bug)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值