如何将包中的类导入jsp文件?

时间:2013-08-07 21:56:42

标签: java jsp servlets

好像我已经正确导入了包和类,但由于某种原因,找不到我的变量用户。 User是在AddTo类中创建的String类型的对象。

<%@ page import= "package1.AddTo" %>

<html>
 <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
 </head>

 <body>
    <p> Shopping Cart</p>
    <%= System.out.println(user.name); %>
 </body>
</html>

2 个答案:

答案 0 :(得分:2)

您只能从包中导入一个类,而不是它的字段。

话虽如此,您应该在某个servlet中添加AddTo对象作为请求属性,并使用JSP访问EL中的属性。你不应该在新代码中使用scriplets。

在Servlet中你可以:

request.setAttribute("addTo", addTo);

然后在JSP中,您可以访问属性user的{​​{1}}属性:

  
addTo

另见:

答案 1 :(得分:0)

您的JSP中不包含已包含在其中的类。你只需要很长时间地引用它们。

所以我假设你需要:

    System.out.println(package1.AddTo.user.name);

(虽然这没有多大意义,看到用户名应该在会话中,对吗?)

Matt Ball说在JSP中放入大量代码是一个坏主意是真的,但更多的是在错误可能揭示一些不应该泄露的信息的情况下,那么JSP可以在编译错误中揭示用户可以看到。就像你把代码放在JSP中直接建立数据库连接,而不是调用类

像这样:

Class.forName(...);
Connection con = DriverManager.getConnection("jdbc:drivertype://server;errors=full;translate binary=true", "user", "pwd");

这非常糟糕。如果存在编译错误,则会显示用户名和密码,甚至是数据库无法访问时的连接错误;并且用户会知道如何破解您的数据库,因为默认情况下它会向用户显示有问题的代码行!

所以相反:

   Connection con = package1.databases.createConnectionToDatabase();

您还可以通过将JSP中的所有Java代码放在Try和Catch块中来防止错误向用户显示实际的代码行。