将数据从servlet传递给jsp而没有表单?

时间:2013-12-10 17:45:55

标签: java jsp servlets

所以我在这里要做的就是从servlet中获取JSP中没有任何形式的酒店列表。

这是我的JSP:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<ul>
    <c:forEach var="elem" items="${list}">
    <li>${elem.name}</li>
    </c:forEach>    
</ul>
</body>
</html>

Servlet功能:

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


    try {
        java.util.List<Hotel> list = model.getAllHotels();
        request.setAttribute("list", list);
        RequestDispatcher rDispatcher = request.getRequestDispatcher("/index.jsp");
        rDispatcher.forward(request, response);

    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

现在我知道如何使用get / post通过表单执行此操作,因为servlet具有特定的功能。但是如何在没有表格的情况下发送这些数据?

2 个答案:

答案 0 :(得分:1)

您只需要一个指向您的servlet的链接:

<a href="<c:url value='/yourServlet' />">Click here to list the hotels</a>

您还可以通过在浏览器的地址栏中键入地址来调用servlet:

http://localhost:8080/yourWebApp/yourServlet

你的servlet的代码很好,也是JSP的代码。

由于web.xml中的/yourServlet元素,或者感谢servlet类上的<servlet-mapping>注释,servlet被映射到某个URL(在我的示例中为@WebServlet)。

答案 1 :(得分:-1)

最好的方法是使用Tag处理程序。您不必处理servlet。 您的jsp可以调用标记处理程序并获取酒店列表,您可以循环遍历列表,就像您在代码中一样。

<c:set var="HotelList">
    <x:HotelSearch query="something" /> 
</c:set>
<c:set var="list" value="${fn:split(HotelList, ',')}" />
<ul>
    <c:forEach var="elem" items="${list}">
        <li>${elem.name}</li>
    </c:forEach>    
</ul>

在上面的代码中,HotelSearch是一个用于返回搜索结果字符串的标记处理程序。 例如酒店1,饭店2,饭店3

稍后使用拆分将字符串分解并转换为数组。

public class HotelSearch extends SimpleTagSupport {

    private String query;

    @Override
    public void doTag() throws JspException {
        JspWriter out = getJspContext().getOut();
        try {
            //Query the database using a Database Controller.
            out.println(DatabaseController.getSearchResult(query));
        } catch (java.io.IOException ex) {
            throw new JspException("Error in HotelSearch tag", ex);
        }
    }

    public void setQuery(String query) {
        this.query = query;
    }
}