项目场景:普通Javaweb项目,jdk1.8,tomcat8.5
提示:
实训周机构的老师敲的电子商城,数据交互部分是jsp+el+ajax
问题描述:
使用el表达式获取域对象中的值,然后绑定了一个点击事件,引用了一个外部的js文件,js进行打印中文的时候出现乱码 function buy(goodid){
$.post("goods_buy", {goodsid:goodid,name:"卢本伟"}, function(data){
if(data=="ok")
{
alert("添加到购物车成功asd123");
layer.msg("添加到购物车!data==ok", {time:800}, function(){
location.reload();
});
return "添加到购物车成功asd123";
}
else if(data=="fail")
{
alert("添加到购物车失败");
layer.msg("库存不足,请购买其他商品!data==fail", {time:800}, function(){
});
}
@WebServlet(name = "goods_buy",urlPatterns = "/goods_buy")
public class GoodsBuyServlet extends HttpServlet {
private GoodsService gService = new GoodsService();
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Order o = null;
// request.setCharacterEncoding("utf-8");
String str = new String(request.getParameter("name").getBytes("iso-8859-1"), "UTF-8");
System.out.println("传入的参数name:"+str);
// $.post("goods_buy", {goodsid:goodid}, function(data){
if(request.getSession().getAttribute("order") != null) {
o = (Order) request.getSession().getAttribute("order");
}else {
o = new Order();
request.getSession().setAttribute("order", o);
}
int goodsid = Integer.parseInt(request.getParameter("goodsid"));
Goods goods = gService.getGoodsById(goodsid);
if(goods.getStock()>0) {
o.addGoods(goods);
response.getWriter().print("ok");
}else {
response.getWriter().print("fail");
}
}
接受结果:
原因分析:
通过传参到后台,也是乱码,然后配置了过滤器,Request和response的字符集都设为utf8, 初步判定是js文件编码问题。解决方案:
解决方法:第一种:直接更改js文件的文件编码,用记事本打开,另存为utf-8,但我这里不行,然后另存为带bom的utf8就能够解决。 第二种:直接在web.xml里面进行配置:[参考吧内老哥的帖子](https://blog.youkuaiyun.com/lihao19920629/article/details/51622692?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164036983116780271522195%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164036983116780271522195&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-51622692.pc_search_result_control_group&utm_term=%E8%A7%A3%E5%86%B3%E5%BC%95%E5%85%A5JS%E4%B8%AD%E6%96%87%E4%B9%B1%E7%A0%81%E9%97%AE%E9%A2%98&spm=1018.2226.3001.4187) <jsp-config>
<jsp-property-group>
<display-name>HtmlConfiguration</display-name>
<url-pattern>*.html</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
<jsp-property-group>
<display-name>JspConfiguration</display-name>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
<jsp-property-group>
<display-name>JsConfiguration</display-name>
<url-pattern>*.js</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config>