我是jsp / servlets的新手,并试图找出编写jsp页面的正确方法。我在这里读到另一个帖子,说scriplets不是一个很好的技术,应该避免。 我正在尝试找到一个用servlet替换jsp的完整示例,因为我已经阅读了其他一些答案而且我有点困惑。
实际上,在我的主页上,我有一个链接标签(Products)重定向到product.jsp,其中scriplet用于显示我数据库中的所有产品(名称,型号,价格,制造商)。
如果我想将其转换为servlet,我该怎么办? 我知道要创建一个扩展HttpServlet并使用doGet的类。 类似的东西:
public class IndexController extends HttpServlet {
ListProducts listProducts;
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setAttribute("products", listProducts.getproducts());
req.getRequestDispatcher("/index.jsp").forward(req, resp);
}
}
除此之外,我需要一个用于建立数据库连接的类ListProducts
和一个返回产品列表的函数getProducts
?
或者我错过了什么?
如果我想从servlet内部的url传递参数以获取特定产品怎么办?
非常感谢任何帮助。
答案 0 :(得分:0)
JSP应该只有表示逻辑,我们在那里显示/收集用户的信息。 JSP应该将这些信息传递给我们拥有业务逻辑的Servlet,并发回一个再次显示在JSP或HTML页面中的响应。
(理想情况下,servlet应该调用一个服务类,该服务类为任何数据库交互调用DAO)
请仔细阅读Servlets JSP的基础知识我推荐 Head First JSP / Servlets ,它具有强大的基础知识,您可以编写好的应用程序。
回复您的修改:
在JSP中使用JSTL标记来显示数据。制作 ProductService 和 ProductDao 类。 ProductDao将使用getProducts(String productId)和deleteProduct(id)等方法与DB交互。
在ProductService中使用类似的方法,包含所有业务逻辑。
从您的Servlet doGet或doPost调用服务类方法,该方法应调用您的Dao方法。
如果要向应用程序/数据库添加/编辑数据,请使用POST,如果您要请求现有数据,请使用get。
并结帐these教程。
答案 1 :(得分:0)
嗯,这更像是你要前往的(模型视图控制器) MVC 架构,这是一件好事。
您已经创建了Servlet(控制器)。
现在您需要一个名为 ListProducts 的类,它充当模型。
视图将是您想要显示结果的jsp。
ListProducts 类将有一个列表(可能是ArrayList
)来保存产品列表,一个方法 getProducts 来返回列表。< / p>
此 ListProducts 类可以使用另一个可以创建数据库连接并进行查询的类。 ListProducts 类应该调用该类的一个方法来创建数据库连接并获取产品列表并自行更新。
之后你的servlet可以从 ListProducts calss获取这个列表,并在一些jsp上显示它。
示例:
class HandleDBConnections{
ArrayList listOfProducts;
makeQuery(String param);
ArrayList getList(String yourParameterForSpecificProduct) {
listOfProducts = makeQuery(yourParameterForSpecificProduct);
return this.listOfProducts;
}
}
class ListProducts {
ArrayList list;
getProducts() {
// get list from DB handlers above
return this.list; // return the list
}
}
现在您还可以从servlet传递一些参数来获取特定产品。 yourParameterForSpecificProduct
用于同一目的。如果您不想传递参数,则可以使用另一个不带参数的同名方法。