我正在研究需要在JSP中读取数据库的项目,但javascript使用数据来渲染谷歌地图(地图点).我不知道如何通过javascript访问NoSQL数据库,所以我正在考虑在javascript中嵌入JSP来访问数据,并将其作为一种方式将它们提供给javascript.
我搜索了很多关于这些功能的内容,我希望代码如下:
var a = <%=data %>
我怎么能控制脚本(因为它是.js)和index.jsp?
谢谢
Java代码在服务器上运行,这意味着它在您的应用程序服务器上运行并有助于呈现视图(在本例中为JSP).JavaScript在客户端运行,这意味着它在客户端浏览器(Internet Explorer [ugh],Firefox,Chrome和on ...)上运行.所以,根据您当前的代码:
var a = <%=data %>;
假设data
是a String
且值为"Hello World"
,生成的HTML/JS将是:
var a = Hello World;
哪会产生错误.所以,你需要引用变量:
var a = '<%=data %>';
现在这会产生:
var a = 'Hello World';
对于更复杂的通信,例如将列表或复杂结构或复杂结构列表从服务器传递到客户端,最好使用通用格式来交换数据,如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 { ListcomplexObjectList = ... //get your data request.setAttribute("complexObjectList", OBJECT_MAPPER.writeValueAsString(complexObjectList)); //forward to the desired view... request.getRequestDispatcher("/WEB-INF/theView.jsp").forward(request, response); } }
然后在你的JSP中(使用Expression Language,因为你应该避免使用scriptlet):