将Java结果传递给JSP

时间:2012-09-28 22:06:01

标签: java jsp

我最近被Java引入了编程网站的精彩世界。我对Java有一点经验,但仍然认为自己是初学者。

我创建了一个Java类,其中包含一个简单的SQL查询。我试图在JSP页面上显示但不确定如何实现这一点。

这是我的名为Main.java的Java类:

public static void main(String[] args) throws Exception { 
    //Accessing driver from JAR
    Class.forName("com.mysql.jdbc.Driver");

    //Creating a variable for the connection called "con"
    //jdbc:mysql://host_name:port/dbname
    //Driver name = com.mysql.jdbc.Driver
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/wae","root","");

    PreparedStatement statement = con.prepareStatement("select name from user");
    ResultSet result = statement.executeQuery();
    while(result.next()) {
        System.out.println(result.getString(1));
    }
}

如何在JSP页面上获得system.out.println

6 个答案:

答案 0 :(得分:1)

如果您需要保存结果并显示给JSP。

将结果保存在请求中,并在视图层迭代中使用JSTL显示结果。 这意味着,在servlet中获取请求并转发它新的jsp

我建议使用JSF代替JSP,

答案 1 :(得分:0)

JSP还允许您在JSP中编写Java代码块。您可以通过将Java代码置于<%和%>之间来实现此目的。字符。 scriptlet包含每次调用JSP时执行的Java代码 这是一个简单的jsp Web应用程序链接,可以帮助您入门。

http://j2ee.masslight.com/Chapter1.html#mygreeting

答案 2 :(得分:0)

您可以使用以下示例代码作为参考。

JSP page
       <form action="servlet1" method="get">
        <%   ModelClass class = new ModelClass();
        class.connectDb();
        class.performDBoperations();
          %>
       <table><tr><td>
      <%   
              class.id;     
       %> 
       </form>

Model Class:
        class ModelClass {
          int id;
            public static void connectDb() {
               dbConnection code
               }
             public void performDBoperations() {
                  get info from table with SQL thru JDBC.
                    id=update it;  
               }

答案 3 :(得分:0)

Web编程的一个基本概念是您不从方法(main或任何其他方法)开始操作。有人请求JSP或servlet以及相应的类答案。您可以在JSP中执行这两项操作,并将连接到数据库的工作留给辅助类,如@ chaitanya10 answer所示。

Nebeans tutorial for JSP's并不是一个糟糕的起点。网上有几个JSP / Servlets教程,但我建议远离Java EE教程。

答案 4 :(得分:0)

对于您发布的示例,您需要做的是编写一个servlet,在该servlet中,您将获得业务逻辑调用(在本例中为数据库查询),在获取数据之后,您必须将其传递给JSP页面。使用servlet不需要main方法,但必须将它们部署在servlet容器中(如Tomcat)。

以下是代码:

公共类UserListServlet扩展了HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
                                    throws ServletException, IOException {  
    //Accessing driver from JAR
    Class.forName("com.mysql.jdbc.Driver");

    //Creating a variable for the connection called "con"
    //jdbc:mysql://host_name:port/dbname
    //Driver name = com.mysql.jdbc.Driver
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/wae","root","");

    PreparedStatement statement = con.prepareStatement("select name from user");
    ResultSet result = statement.executeQuery();
    //creates a list with the user names
    List<String> userList = new ArrayList<String>();
    while(result.next()) {
        userList.add(result.getString(1));
    }
    //passing the data to the JSP
    request.setAttribute("users", userList);
    getServletContext().getRequestDispatcher("/user_list.jsp").forward(request, response);  
}  

protected void doGet(HttpServletRequest request, HttpServletResponse response)                           throws ServletException, IOException {  
    processRequest(request, response); 
}  

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
                                throws ServletException, IOException {
    processRequest(request, response);
}

}

现在在JSP中你可以有这样的东西:

<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.List" %>
<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>User List</title>
    </head>
    <body>
        <%
        if (request.getAttribute("userList") != null) {
            List<String> users = request.getAttribute("userList");
        %>

        <h1>Users: </h1>
        <table>
            <tr>
                    <td>Name<</td>
            </tr>

            <% for (String name : users) {%>

            <tr>
                <td><%= name%></td>
            </tr>
            <% }
          }%>

        </table>
    </body>
</html>

您可以使用JSTL代替Scriptlets(&lt;%...%&gt;)来改进此示例。

答案 5 :(得分:-2)

您确定这是创建Java网站的好方法吗?

向谷歌询问Java EE,Servlets并加入其中。