印刷servlet请求与前pression语言属性 [英] printing servlet request attributes with expression language

查看:165
本文介绍了印刷servlet请求与前pression语言属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要打印servlet请求JSP文件使用前pression语言中的属性。
我也做了以下内容,在我的Servlet我设置了所有必要的请求属性。

  setRequestAttributes(字符串,对象);

在我的JSP页面中我使用下面的行打印属性:

  c为C:出值=$ {}字符串/>

阅读其他职位,如果2.4版本在Web使用XML我检查后,就是这样。

 使用的getAttribute(字符串)

在servlet本身它打印的价值就好了。
没有任何人有什么,我需要做的,所以我可以使这项工作任何想法。

修改

Servlet的code:

 包的servlet;进口java.io.IOException异常;
进口java.sql.Connection中;
。进口的java.sql preparedStatement;
进口java.sql.ResultSet中;
进口java.sql.ResultSetMetaData;
进口值java.sql.SQLException;
进口的java.util.ArrayList;
进口的java.util.HashMap;
进口的java.util.List;
进口的java.util.Map;进口javax.servlet.RequestDispatcher;
进口javax.servlet.ServletException;
进口javax.servlet.http.HttpServlet;
进口javax.servlet.http.HttpServletRequest;
进口javax.servlet.http.HttpServletResponse;进口classes.DBConnection;公共类MessageDetail延伸的HttpServlet {    私有静态最后的serialVersionUID长1L =;
    私人字符串信息id;
    专用连接连接;    公共MessageDetail(){        超();
    }
    保护无效的doGet(HttpServletRequest的请求,HttpServletResponse的响应)抛出了ServletException,IOException异常{    }
    保护无效的doPost(HttpServletRequest的请求,HttpServletResponse的响应)抛出了ServletException,IOException异常{        连接=新DBConnection的()returnConnection()。
        信息id =的request.getParameter(XXXXX);        尝试{
            的handleRequest(请求);
        }赶上(的SQLException E){
            e.printStackTrace();
        }        RequestDispatcher的调度=的request.getRequestDispatcher(messageDetail.jsp);
        dispatcher.forward(请求响应);
    }    私人无效的handleRequest(HttpServletRequest的要求)抛出的SQLException {        ResultSet中messageData = getMessageData(XXXXXX);
        ResultSet中attachmentData = getMessageData(XXXXXX);
        地图<整数,列表与LT;名单<对象>>> messageMap = convertResultSetToMap(messageData);
        地图<整数,列表与LT;名单<对象>>> attachmentMap = convertResultSetToMap(attachmentData);
        地图<整数,列表与LT;名单<对象>>> totalMap = combineMaps(messageMap,attachmentMap);
        setRequestAttributes(请求,totalMap);    }    私人的ResultSet getMessageData(字符串tableName值)抛出的SQLException {        SQL字符串=SELECT * FROM+ tableName值+其中xxxxxxxx =+ XXXXXXX;
        preparedStatement preSTM =连接prepareStatement(SQL,为ResultSet.CONCUR_READ_ONLY,ResultSet.TYPE_SCROLL_SENSITIVE)。
        结果集RS = prestm.executeQuery();
        返回RS;
    }    私人地图<整数,列表与LT;名单<对象>>> convertResultSetToMap(ResultSet的RS)抛出的SQLException {        地图<整数,列表与LT;名单<对象>>> resultSetMap =新的HashMap<整数,列表与LT;名单<对象>>>();
        ResultSetMetaData的RSMD = rs.getMetaData();
        INT colTotal = rsmd.getColumnCount();
        INT ROWNUMBER = 1;        rs.beforeFirst();
        而(rs.next()){            清单<名单,LT;对象>>行=新的ArrayList<名单,LT;对象>>();
            对(INT colCounter = 1; colCounter&下; = colTotal; colCounter ++){                清单<对象> cellData =新的ArrayList<对象>();                cellData.add(rsmd.getColumnName(colCounter));
                cellData.add(rs.getObject(colCounter));                row.add(cellData);
            }            resultSetMap.put(ROWNUMBER,行);
        }
        返回resultSetMap;
    }    私人无效setRequestAttributes(HttpServletRequest的请求,地图<整数,列表与LT;名单<对象>>> resultSetMap){        对于(Map.Entry的<整数,列表与LT;名单<对象>>>项:resultSetMap.entrySet()){
            清单<名单,LT;对象>> rowData = entry.getValue();
            对于(列表<对象>的listItem:rowData){                了request.setAttribute((字符串)listItem.get(0),listItem.get(1));
            }
        }
    }    私人地图<整数,列表与LT;名单<对象>>> combineMaps(地图<整数,列表与LT;名单<对象>>> messageData,地图<整数,列表与LT;名单<对象>>> attachmentData){
        地图<整数,列表与LT;名单<对象>>> totalMap =新的HashMap<整数,列表与LT;名单<对象>>>();
        totalMap.putAll(messageData);
        totalMap.putAll(attachmentData);
        返回totalMap;
    }
}

JSP code:

 <%@页语言=Java的的contentType =text / html的;字符集= ISO-8859-1
    的pageEncoding =ISO-8859-1%GT;
    <%@ taglib伪preFIX =CURI =htt​​p://java.sun.com/jsp/jstl/core%GT;
!< D​​OCTYPE HTML PUBLIC - // W3C // DTD HTML 4.01过渡// ENhttp://www.w3.org/TR/html4/loose.dtd\">
< HTML和GT;
< HEAD>
<链接HREF =/ ArchiveSearch /资源/ CSS / messageDetail.css的rel =stylesheet属性类型=文/ CSS>< META HTTP-EQUIV =Content-Type的CONTENT =text / html的;字符集= ISO-8859-1>
<标题>消息详情< /标题>
< /头>
<身体GT;
    < D​​IV CLASS =包装>
            < H1>消息详情及LT; / H1>
            < D​​IV CLASS =messageMeta1>
                    < D​​IV><跨度类=标签>发件人:LT; / SPAN>< C:从价值=$ {信息id}/>< / DIV>
                    < D​​IV><跨度类=标签>接收器:LT; / SPAN>< / DIV>
                    < D​​IV><跨度类=标签>主题:< / SPAN>< / DIV>< C:从价值=$ {messageSender,和}/>
                    < D​​IV><跨度类=标签>附件:LT; / SPAN>< / DIV>
            < / DIV>
            < D​​IV CLASS =messageMeta2>
                    < D​​IV><跨度类=标签>表壳编号:LT; / SPAN>< / DIV>
                    < D​​IV><跨度类=标签>日期:< / SPAN>< / DIV>
            < / DIV>
            < D​​IV CLASS =在messageContent>
            < / DIV>
    < / DIV>
< /身体GT;
< / HTML>


解决方案

有太多错在这个code给出一个合适的答案。基本上一切都需要重写。您可能会发现在以下答案有帮助开球例子:使用MVC和JDBC JSP。

I want to print servlet request attributes within a JSP file use expression language. I have done the following, in my Servlet I set all the necessary request attributes with

setRequestAttributes(String, Object);

In my JSP page I use the following line to print the attribute:

<c:out value="${string}"/>

After reading other posts I checked if version 2.4 is used in the web XML, it is.

When using getAttribute(String)

In the Servlet itself it prints the value just fine. Does anyone have any idea of what I need to do so I can make this work.

EDIT

Servlet code:

package servlets;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import classes.DBConnection;

public class MessageDetail extends HttpServlet {

    private static final long serialVersionUID = 1L;
    private String messageid;
    private Connection connect;

    public MessageDetail() {

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

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

        connect = new DBConnection().returnConnection();
        messageid = request.getParameter("xxxxx");

        try {
            handleRequest(request);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        RequestDispatcher dispatcher = request.getRequestDispatcher("messageDetail.jsp");
        dispatcher.forward(request, response);
    }

    private void handleRequest(HttpServletRequest request) throws SQLException{

        ResultSet messageData = getMessageData("xxxxxx");
        ResultSet attachmentData = getMessageData("xxxxxx");
        Map<Integer, List<List<Object>>> messageMap = convertResultSetToMap(messageData);
        Map<Integer, List<List<Object>>> attachmentMap = convertResultSetToMap(attachmentData);
        Map<Integer, List<List<Object>>> totalMap = combineMaps(messageMap, attachmentMap);
        setRequestAttributes(request, totalMap);

    }

    private ResultSet getMessageData(String tableName) throws SQLException{

        String sql = "SELECT * FROM " + tableName + " WHERE xxxxxxxx= "+ xxxxxxx;
        PreparedStatement prestm = connect.prepareStatement(sql, ResultSet.CONCUR_READ_ONLY, ResultSet.TYPE_SCROLL_SENSITIVE);
        ResultSet rs = prestm.executeQuery();
        return rs;
    }

    private Map<Integer, List<List<Object>>> convertResultSetToMap(ResultSet rs) throws SQLException{

        Map <Integer, List<List<Object>>> resultSetMap = new HashMap<Integer, List<List<Object>>>(); 
        ResultSetMetaData rsmd = rs.getMetaData();
        int colTotal = rsmd.getColumnCount();
        int rowNumber = 1;

        rs.beforeFirst();
        while(rs.next()){

            List<List<Object>> row = new ArrayList<List<Object>>();
            for(int colCounter = 1; colCounter<=colTotal; colCounter++){

                List<Object> cellData = new ArrayList<Object>();

                cellData.add(rsmd.getColumnName(colCounter));
                cellData.add(rs.getObject(colCounter));

                row.add(cellData);
            }

            resultSetMap.put(rowNumber, row);
        }
        return resultSetMap;
    }

    private void setRequestAttributes(HttpServletRequest request, Map<Integer, List<List<Object>>> resultSetMap){

        for(Map.Entry<Integer, List<List<Object>>> entry : resultSetMap.entrySet()){
            List<List<Object>> rowData = entry.getValue();
            for(List<Object> listItem : rowData){

                request.setAttribute((String) listItem.get(0), listItem.get(1));
            }
        }
    }

    private Map <Integer, List<List<Object>>> combineMaps(Map <Integer, List<List<Object>>> messageData, Map <Integer, List<List<Object>>> attachmentData){
        Map <Integer, List<List<Object>>> totalMap = new HashMap<Integer, List<List<Object>>>();
        totalMap.putAll(messageData);
        totalMap.putAll(attachmentData);
        return totalMap;
    }
}

JSP code:

<%@ 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>
<link href="/ArchiveSearch/resources/css/messageDetail.css" rel="stylesheet" type="text/css">

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Message detail</title>
</head>
<body>
    <div class="wrapper">
            <h1>Message Details</h1>
            <div class="messageMeta1">
                    <div><span class="label">Sender:</span><c:out value="${messageid}"/></div>
                    <div><span class="label">Receiver:</span></div>
                    <div><span class="label">Subject:</span></div><c:out value="${messagesender}"/>
                    <div><span class="label">Attachments:</span></div>
            </div>
            <div class="messageMeta2">
                    <div><span class="label">Case ID:</span></div>
                    <div><span class="label">Date:</span></div>
            </div>
            <div class="messageContent">
            </div>
    </div>
</body>
</html>

解决方案

There's too much wrong in this code to give one suitable answer. Basically everything needs to be rewritten. You may find the kickoff examples in the following answer helpful: JSP using MVC and JDBC.

这篇关于印刷servlet请求与前pression语言属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆