如何在javascript中嵌入JSP?
我正在做一个需要用JSP读取数据库的项目,但是javascript使用这些数据来呈现google地图(地图点)。我不知道如何通过javascript访问NoSQL数据库,所以我正在考虑在javascript中嵌入JSP来访问数据,并将其作为一种方式提供给javascript 我已经搜索了很多关于这些功能的信息,我希望有如下代码:如何在javascript中嵌入JSP?,javascript,html,jsp,Javascript,Html,Jsp,我正在做一个需要用JSP读取数据库的项目,但是javascript使用这些数据来呈现google地图(地图点)。我不知道如何通过javascript访问NoSQL数据库,所以我正在考虑在javascript中嵌入JSP来访问数据,并将其作为一种方式提供给javascript 我已经搜索了很多关于这些功能的信息,我希望有如下代码: var a = <%=data %> var a= 如何控制脚本(因为它是.js)和index.jsp 感谢Java代码在服务器上运行,这意味着它在您的
var a = <%=data %>
var a=
如何控制脚本(因为它是.js)和index.jsp
感谢Java代码在服务器上运行,这意味着它在您的应用程序服务器上运行,并有助于呈现视图(在本例中为JSP)。JavaScript在客户端运行,这意味着它在客户端浏览器(Internet Explorer[ugh]、Firefox、Chrome等等)上运行。因此,根据您当前的代码:
var a = <%=data %>;
这将产生一个错误。因此,您需要引用变量:
var a = '<%=data %>';
对于更复杂的通信,如从服务器向客户端传递列表或复杂结构或复杂结构列表,最好使用通用格式来交换JSON之类的数据。您可以将数据从服务器(最好是在Servlet中)打包成JSON字符串,然后轻松地将其传递到JavaScript端。例如,使用Jackson Library For Java:
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
List<ComplexObject> complexObjectList = ... //get your data
request.setAttribute("complexObjectList", OBJECT_MAPPER.writeValueAsString(complexObjectList));
//forward to the desired view...
request.getRequestDispatcher("/WEB-INF/theView.jsp").forward(request, response);
}
}
@WebServlet(“/MyServlet”)
公共类MyServlet扩展了HttpServlet{
私有静态最终ObjectMapper对象_MAPPER=新ObjectMapper();
public void doGet(HttpServletRequest请求、HttpServletResponse响应)
抛出IOException{
List complexObjectList=…//获取数据
setAttribute(“complexObjectList”,OBJECT_MAPPER.writeValueAsString(complexObjectList));
//前进到所需的视图。。。
getRequestDispatcher(“/WEB-INF/theView.jsp”).forward(请求,响应);
}
}
然后在JSP中(使用原因):
var complexObjectList=JSON.parse(“${complexObjectList}”);
//在JavaScript端玩你的新对象。。。
您的想法是错误的。将服务器端代码和前端代码这两件事情看作是并行的“事情”。JSP将包含数据库逻辑。您可以将其提供给javascript,因为服务器端代码首先触发。或者,您可以将JSP/DB代码设置为接受异步调用。如果您在等待某人提交某个内容,而没有发回邮件,则会将其发送到服务器端代码。在这里分离您的关注点,这意味着找出服务器端代码需要处理的DB内容,然后处理前端代码以与之交互。您可以将JS嵌入返回数据的JSP中。谢谢,使用json是一个不错的选择,但是从数据库读取数据然后将其写入json会有很大的开销,再次被javascript读取?@user3307896这并没有那么多开销。首先尝试一下,然后测量一下。我曾经看到很多QN试图将JSP和JS结合在一起。很好的解释,如果我遇到下一个类似的qn,我将转到这个解释。好+1.
var a = 'Hello World';
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
List<ComplexObject> complexObjectList = ... //get your data
request.setAttribute("complexObjectList", OBJECT_MAPPER.writeValueAsString(complexObjectList));
//forward to the desired view...
request.getRequestDispatcher("/WEB-INF/theView.jsp").forward(request, response);
}
}
<script type="text/javascript">
var complexObjectList = JSON.parse('${complexObjectList}');
//play with your new object in JavaScript side...
</script>