不能在java中使用jsp变量

时间:2014-07-19 15:12:45

标签: java jsp

我们想从同一文件中的java类中的jsp访问变量。有人可以建议如何使用它吗?

以下是代码。在这里我们在jsp标签中使用data变量&我们想要访问data java类中的DummyDB的值。

JSP文件:

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="java.util.StringTokenizer"%>
<%@ page import="java.sql.*" %>
    <%@ page import="java.io.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="java.net.*" %>

<%

HttpSession Session = request.getSession(true);

String data = Session.getAttribute("data").toString();

%>

<%!

public class DummyDB {
    private int totalCountries;

   RequestDispatcher rd = request.getRequestDispatcher("include.jsp");
rd.include(request, response); 

    private List<String> countries;
    public DummyDB() {
        countries = new ArrayList<String>();
        StringTokenizer st = new StringTokenizer(data, ",");

        while(st.hasMoreTokens()) {
            countries.add(st.nextToken().trim());
        }
        totalCountries = countries.size();
    }

    public List<String> getData(String query) {
        String country = null;
        query = query.toLowerCase();
        List<String> matched = new ArrayList<String>();
        for(int i=0; i<totalCountries; i++) {

            country = countries.get(i).toLowerCase();
            if(country.startsWith(query)) {
                matched.add(countries.get(i));
            }
        }
        return matched;
    }
        }
%>

2 个答案:

答案 0 :(得分:0)

我不知道你在哪里创建DummyDB类的实例,但是如果你在jsp代码中创建了这样一个实例,你可以在构造函数中将data字符串传递给它,或者添加一个接受该字符串的setData方法。

例如:

<%

HttpSession Session = request.getSession(true);

String data = Session.getAttribute("data").toString();
DummyDB db = new DummyDB (data);

%>
<%!
public class DummyDB {
...
    public DummyDB(String data) {
        countries = new ArrayList<String>();
        StringTokenizer st = new StringTokenizer(data, ",");
        ...

答案 1 :(得分:0)

改变这个:

StringTokenizer st = new StringTokenizer(data, ",");

为:

StringTokenizer st = new StringTokenizer(request.getSession().getAttribute("data"), ",");

如果可行,您可以完全删除此行:

String data = Session.getAttribute("data").toString();