我们想从同一文件中的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;
}
}
%>
答案 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();