java - 使用请求对象获取 JSP 自定义标记属性的参数值时出错

标签 java jsp taglib

我正在努力在 JSP 中制作自定义标记以提供数据库连接。 我制作了标签并将其与适当的 java 类链接。 但我无法获取从 index.jsp 页面传递给此自定义标记的参数。 这是文件。

form.jsp

<%@ page import="java.util.*,java.io.*;" language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!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>Get User Data</title>
</head>
<body bgcolor="#AABBCC">
<form name="form" action="dbConnect.jsp" method="POST">
<table>
<tr>
    <td>JDBC Driver</td>
    <td> <input type="text" name="jdbcDriver" size="30"> </td>
</tr>
<tr>
    <td>JDBC URL</td>
    <td><input type="text" name="serverURL" size="30"></td>
</tr>
<tr>
    <td>User Name</td>
    <td><input type="text" name="username" size="30"></td>
</tr>
<tr>
    <td>Password</td>
    <td><input type="password" name="password" size="30"></td>
</tr>
<tr>
    <td>Query</td>
    <td><input type="text" name="query" size="30"></td>
</tr>
<tr>
    <td></td>
    <td><input type="submit" name="submit_query" value="Submit" ></td>
</tr>
</table>
</form>
</body>
</html>

customTag.tld

<taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>2.0</jsp-version>
    <tag>
        <name>dbTag</name>
        <tag-class>com.appperfect.training.CustomDBTag</tag-class>
        <body-content>scriptless</body-content>
        <attribute>
            <name>jdbcDriver</name>
            <required>true</required>
            <type>java.lang.String</type>
            <fragment>false</fragment>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>serverURL</name>
            <required>true</required>
            <type>java.lang.String</type>
            <fragment>false</fragment>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>username</name>
            <required>true</required>
            <type>java.lang.String</type>
            <fragment>false</fragment>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>password</name>
            <required>true</required>
            <type>java.lang.String</type>
            <fragment>false</fragment>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>query</name>
            <required>true</required>
            <type>java.lang.String</type>
            <fragment>false</fragment>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>
</taglib>

dbConnect.jsp

<%@ page import="java.util.*,java.io.*,java.sql.*" %>
<%@ taglib prefix="db" uri="WEB-INF/CustomTag.tld" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <%
        String driver, url, uname, pass, query;
        driver = "jdbcDriver";
        url = "serverURL";
        uname = "username";
        pass = "password";
        query = "query";
     %>
    <db:dbTag 
    jdbcDriver="<%= request.getAttribute(driver).toString() %>" 
    serverURL="<%= request.getAttribute(url).toString() %>" 
    username="<%= request.getAttribute(uname).toString() %>" 
    password="<%= request.getAttribute(pass).toString() %>" 
    query="<%= request.getAttribute(query).toString() %>">
    </db:dbTag>
</body>
</html>

customDBTag.java

import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;

import java.io.*;

public class CustomDBTag extends SimpleTagSupport {

    private String jdbcDriver, serverURL, username, password, query;

    public void setJdbcDriver(String driver) {
        this.jdbcDriver = driver;
    }

    public void setServerURL(String url) {
        this.serverURL = url;
    }

    public void setUsername(String uname) {
        this.username = uname;
    }

    public void setPassword(String pass) {
        this.password = pass;
    }

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

    StringWriter sw = new StringWriter();   

    @Override
    public void doTag() throws JspException, IOException {
        JspWriter out = getJspContext().getOut();

        if(jdbcDriver!=null)
            out.println(jdbcDriver);
        if(serverURL!=null)
            out.println(serverURL);
        if(username!=null)
            out.println(username);
        if(password!=null)
            out.println(password);
        if(query!=null)
            out.println(query);
    }

}

任何人都可以建议我做错了什么吗?

PS:我在 Mac OS X 10.7 上使用 Eclipse EE Indigo、Apache Tomcat 7 和 Mysql 5

最佳答案

您正在发送参数并读取属性

将其更改为读取参数

jdbcDriver=<%= request.getParameter("driver")%>
<小时/>

另请参阅

关于java - 使用请求对象获取 JSP 自定义标记属性的参数值时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24925328/

相关文章:

java - 从 EC2 写入 S3

java - com.microsoft.sqlserver.jdbc.SQLServerDriver 的 ClassNotFoundException

java - 如何使用本地化小数点分隔符将小数值从 JSP 传递到 Action?

java - struts 2 & sitemesh 中不同环境的不同资源文件root

eclipse - 自定义 jsf taglib 的自动完成

java - jsp 页面上的 URI 面临问题

java - 如何让Haxe与Java(Processing 2)/Arduino通信?

java - 找不到NullPointerException的原因,日志没有按要求输出

jsp - 如何查找所有已登录的用户以及正在访问该网站但尚未登录的用户?

Spring Security taglib 秒 :authorize with role hierarchy not working