Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Java结果传递给JSP_Java_Jsp - Fatal编程技术网

将Java结果传递给JSP

将Java结果传递给JSP,java,jsp,Java,Jsp,我最近被扔进了用Java编程网站的奇妙世界。我有一点java的经验,但我还是认为自己是初学者。 我创建了一个Java类,其中包含一个简单的SQL查询。我试图在JSP页面上显示,但不确定如何实现这一点 下面是我的Java类Main.Java: public static void main(String[] args) throws Exception { //Accessing driver from JAR Class.forName("com.mysql.jdbc.Driv

我最近被扔进了用Java编程网站的奇妙世界。我有一点java的经验,但我还是认为自己是初学者。 我创建了一个Java类,其中包含一个简单的SQL查询。我试图在JSP页面上显示,但不确定如何实现这一点

下面是我的Java类Main.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?

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


向谷歌索要JavaEE和servlet,然后进入其中。

JSP还允许您在JSP中编写Java代码块。您可以通过在字符之间放置Java代码来实现这一点。 scriptlet包含每次调用JSP时执行的Java代码。 下面是一个指向简单jsp web应用程序的链接,该应用程序将帮助您入门


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

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;  
               }

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


内比亚人是一个不错的起点。web上有几个JSP/servlet教程,但我建议不要使用Java EE教程。

如果需要将结果保存并显示到JSP

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


我建议使用JSF代替JSP,

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

代码如下:

公共类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>

您可以通过使用而不是Scriptlet来改进此示例。

如果您做得不对,google around more并没有真正的帮助。如果您想不出好的答案,请将问题传递给我们。这个答案不是我认为好的,即使它是你在短时间内想到的最好的。我被告知有一个MVC结构,但实际上没有发现很多,我对MVC非常熟悉,但我不确定它是如何应用的。java@user1393064也许他们指的是Spring MVC:如果是的话,我还建议搜索一些教程,官方文档有点吓人。@user1393064到mvc的链接现在实际使用原始JSP是很少见的。您应该了解您的工作实际使用的框架,并查找该特定框架的教程。我不担心先详细学习底层内容——到目前为止,servlet是用来编写web框架的东西,而不是应用程序,JSP或多或少是一种遗留技术。您已经在这里介绍了Java EE教程:它是针对uni作业的,所教授的文本/信息已经过时。Java EE 5教程是最后一个似乎详细介绍Servlets+JSP的教程:。不过,它并没有真正处理如何让应用程序在容器中运行的问题。如果你被允许使用IDE,我会随便看看你用哪一个来帮助你。我承认我有点不知道如何从头到尾解释这一点。Java EE在让一个新手从0岁到60岁这一点上是非常糟糕的——在回答一个看似琐碎的问题时,假设之前的基本知识只涉及到讨论许多运动部件。我所知道的大部分都是通过潜移默化的实践逐渐渗透进来的,而不是连贯地向我解释。如果我在编程课上教这个,我可能会提供某种类型的学生测试服务器,他们可以简单地将代码复制到-也许可以检查您是否有可用的代码?基本上,我们需要创建一个网站,允许用户向数据库提交一些基本信息,然后还可以检索这些信息。对不起,您能给我指一下教程吗或者其他可以告诉我如何做的事情?请参阅本教程:感谢您的回复,但是我在运行jsp文件时遇到了这个错误:类型不匹配:无法从对象转换为列表