JAVA后台 关于如何从后台传递信息在jsp前端
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA后台 关于如何从后台传递信息在jsp前端相关的知识,希望对你有一定的参考价值。
参考技术A 一般使用两种方式,一种是servlet的转发或重定向跳转页面,并将信息携带过去,另一种方式是ajax请求后台接口,后台接口进行处理之后将信息返回给接口调用者。 参考技术B WebSocket 是一种网络通信协议。RFC6455 定义了它的通信标准。WebSocket 是 html5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
为什么需要 WebSocket ?
了解计算机网络协议的人,应该都知道:HTTP 协议是一种无状态的、无连接的、单向的应用层协议。它采用了请求/响应模型。通信请求只能由客户端发起,服务端对请求做出应答处理。
这种通信模型有一个弊端:HTTP 协议无法实现服务器主动向客户端发起消息。
这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。大多数 Web 应用程序将通过频繁的异步javascript和XML(AJAX)请求实现长轮询。轮询的效率低,非常浪费资源(因为必须不停连接,或者 HTTP 连接始终打开)。
关于后台数据库正常存储中文通过Ajax方式传递到前台变成问号的处理
我的一个程序,用到的后台数据库MySql,字段是Varchar,Character Set是utf8,字段能且已经正确存储了中文。
从数据库取出信息后,在后台Java代码里Debug看到正确的中文。
但是,通过Ajax方式将信息传到前台,前台显示??,用alert查看也是两个问号。
看页面编码方式,<%@ page contentType="text/html; charset=UTF-8"%> 和<meta charset="utf-8"/>都有了。
回去看看Action里的处理,发现有三句对Response的重要处理忘却了,它们是:
response.setContentType("text/xml;charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
response.setCharacterEncoding("UTF-8");
把这三句话放在
PrintWriter out =getPrintWriter(response);
前头就好了。
就是这些,希望对遇到和我一样问题的人有所帮助。
2017年1月9日15:52:37
以上是关于JAVA后台 关于如何从后台传递信息在jsp前端的主要内容,如果未能解决你的问题,请参考以下文章
关于JAVA WEB中,JSP,ACTION一直不返回的问题
jsp前台在利用Ajax向后台发起请求,如何判断后台数据库里的数据是不是发生过更新?