JSP 渲染简单示例

来源:互联网 发布:linux 修改部分文件名 编辑:程序博客网 时间:2024/06/07 19:28
本文代码转载自《Servlet、JSP和Spring MVC初学指南》页面渲染基本就是要实现找到写入资源文件的接口javax.servlet.RequestDispatcher其功能为在服务端从客户端接受requests 并将其发送到any resourses(servlet/ HTML file/ JSP file)该对象由servlet容器创建。其有两种方法forward(ServletRequest request, ServletResponse response)            include(ServletRequest request, ServletResponse response)前者主要应用于进行后续处理(forward),即最后展示的页面内容为“跳转”(处理)后的,后者主要应用于将后续进行处理的内容包含在前面的servletHttpServletRequest.setAttribute(String, Object)所设置的attribute是不能以客户端方式察觉的(与HttpServletRequest.setParameter相对)而处于对象传递的考虑可以选择前者。下面是一个使用jsp el表达式的渲染简单实例(使用isELIgnored ="false"开启对el表达式的支持),

若干隐式对象不述。

package model;/** * Created by admin on 2017/2/16. */public class Address {    private String streetName;    private String streetNumber;    private String city;    private String state;    private String zipCode;    private String country;    public String getStreetName(){return streetName;}    public void setStreetName(String streetName){this.streetName = streetName;}    public String getStreetNumber(){return streetNumber;}    public void setStreetNumber(String streetNumber){this.streetNumber = streetNumber;}    public String getCity(){return city;}    public void setCity(String city) {        this.city = city;    }    public String getState(){return state;}    public void setState(String state){this.state = state;}    public String getZipCode(){return zipCode;}    public void setZipCode(String zipCode){this.zipCode = zipCode;}    public String getCountry(){return country;}    public void setCountry(String country){this.country = country;}}


package model;/** * Created by admin on 2017/2/16. */public class Employee {    private int id;    private String name;    private Address address;    public int getId(){return id;}    public void setId(int id){this.id = id;}    public String getName(){return name;}    public void setName(String name){this.name = name;}    public Address getAddress(){return address;}    public void setAddress(Address address){this.address = address;}}


package servlet;import java.io.IOException;import java.util.HashMap;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import model.Address;import model.Employee;/** * Created by admin on 2017/2/16. */@WebServlet(urlPatterns = {"/employee"})public class EmployeeServlet extends HttpServlet {    private static final int serialVersionUID = -5392874;    @Override    public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{        Address address = new Address();        address.setStreetName("Rue D'Anjou");        address.setStreetNumber("5090B");        address.setCity("Brossard");        address.setState("Quebec");        address.setZipCode("A1A B2B");        address.setCountry("Canada");        Employee employee = new Employee();        employee.setId(1099);        employee.setAddress(address);        employee.setName("Charles Unijeye");        request.setAttribute("employee", employee);        HashMap capitals = new HashMap();        capitals.put("China", "Beijing");        capitals.put("Austria", "Vienna");        capitals.put("Australia", "Canberra");        capitals.put("Canada", "Ottawa");        request.setAttribute("capitals", capitals);        RequestDispatcher rd = request.getRequestDispatcher("/employee.jsp");        rd.forward(request, response);    }}

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored ="false" %><html><head>    <title>Employee</title></head><body>    accept-langage: ${header['accept-language']}    <br/>session id: ${pageContext.session.id}<br/>employee: ${requestScope.employee.name}, ${employee.address.city}<br/>capital: ${capitals["Canada"]}</body></html>

上面是POJO情形下的JSP渲染示例,对于一般容器的JSP迭代渲染可以通过结合JSP标准标签库的若干迭代标签实现,下面是对于List Map给出的简单示例,Servlet类的实现与上例相同。

package model;/** * Created by admin on 2017/2/16. */public class Book {    private String isbn;    private String title;    private double price;    public Book(String isbn, String title, double price){        this.isbn = isbn;        this.title = title;        this.price = price;    }    public String getIsbn(){return isbn;}    public void setIsbn(String isbn){this.isbn = isbn;}    public String getTitle(){return  title;}    public void setTitle(String title){this.title = title;}    public double getPrice(){return price;}    public void setPrice(double price){this.price = price;}}

package servlet;/** * Created by admin on 2017/2/16. */import java.io.IOException;import java.util.ArrayList;import java.util.List;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import model.Book;@WebServlet(        urlPatterns = {"/books"})public class BooksServlet extends HttpServlet {    private static final int serialVersionUID = -234237;    @Override    public void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException{        List<Book> books = new ArrayList<>();        Book book1 = new Book("978-0980839616", "Java 7: A Biginner's Tutorial", 45.00);        Book book3 = new Book("978-0975212820", "Dimensional Data Warehousing with MySQL: A Tutorial", 39.95);        Book book2 = new Book("978-0980331608", "Struts 2 Design and Programming: A Tutorial", 49.95);        books.add(book1);        books.add(book2);        books.add(book3);        request.setAttribute("books", books);        RequestDispatcher rd = request.getRequestDispatcher("/books.jsp");        rd.forward(request, response);    }}

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html><head>    <title>Book List</title>    <style>        table, tr, td{            border: 1px solid brown;        }    </style></head><body>        Books in Simple Table        <table>            <tr><td>ISBN</td><td>Title</td>></tr>            <c:forEach items="${books}" var = "book">                <tr>                <td>${book.isbn}</td>                <td>${book.title}</td>                </tr>            </c:forEach>        </table>        <br/>        Books in Styled Table        <table>            <tr style="background: #ababff">                <tb>ISBN</tb>                <tb>Title</tb>            </tr>            <c:forEach items="${books}" var = "book" varStatus="status">                <c:if test="${status.count%2 == 0}">                    <tr style="background: #eeeeff">                </c:if>                    <c:if test="${status.count%2!=0}">                        <tr style="background: #dedeff">                    </c:if>                <td>${book.isbn}</td>                <td>${book.title}</td>                </tr>>            </c:forEach>        </table>        <br/>            ISBNs only:            <c:forEach items="${books}" var = "book" varStatus="status">                ${book.isbn}<c:if test="${!status.last}">,</c:if>            </c:forEach></body></html>

package servlet;/** * Created by admin on 2017/2/16. */import java.io.IOException;import java.io.StringReader;import java.util.HashMap;import java.util.Map;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet(        urlPatterns = {"/bigCities"})public class BigCitiesServlet extends HttpServlet {    private static final int serialVersionUID = 112233;    @Override    public void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException{        Map<String, String> capitials = new HashMap<>();        capitials.put("Indonesia", "Jakarta");        capitials.put("Malaysis", "Kuala Lumpur");        capitials.put("Thailand", "Bangkok");        request.setAttribute("capitals", capitials);        Map<String, String[]> bigCities = new HashMap<>();        bigCities.put("Australia", new String[]{"Sydney", "Melbourne", "Perth"});        bigCities.put("New Zealand", new String[]{"Auckland", "Christchurch", "Wellington"});        bigCities.put("Indonesia", new String[]{"Jakarta", "Surabaya","Medan"});        request.setAttribute("capitals", capitials);        request.setAttribute("bigCities", bigCities);        RequestDispatcher rd = request.getRequestDispatcher("/bigCities.jsp");        rd.forward(request, response);    }}

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %><%@ taglib uri ="http://java.sun.com/jsp/jstl/core" prefix="c" %><html><head>    <title>Big Cities</title>    <style>    </style></head><body>Capitals<table>    <tr style="background: #448755;color: white;font-weight:bold">        <td>Country</td>        <td>Capital</td>    </tr>    <c:forEach items="${capitals}" var = "mapItem">        <tr>            <td>${mapItem.key}</td>            <td>${mapItem.value}</td>        </tr>    </c:forEach></table><br/>Big Cities<table>    <tr style="background: #448755;color: white;font-weight: bold;">        <td>Country</td>        <td>Cities</td>    </tr>    <c:forEach items="${bigCities}" var = "mapItem">        <tr>            <td>${mapItem.key}</td>            <td>                <c:forEach items="${mapItem.value}" var = "city" varStatus="status">                    ${city}<c:if test="${status.last}">,</c:if>                </c:forEach>            </td>        </tr>    </c:forEach></table></body></html>

关于使用JSP进行简单页面渲染的例子亦可见
Webcollector + Spring + MVC 搭建应用初探(六)(Lenskit 推荐系统实例)
中最后推荐系统页面的简单示例
0 0
原创粉丝点击