java 传递bean_Java:如何将值从类/ bean传递给servlet
您沒有將某些內(nèi)容傳遞給servlet.你只需讓servlet訪問一些東西.
您應(yīng)該擺脫main()方法并將數(shù)據(jù)庫交互代碼移動到DAO類中.我還給模型類(帶有時區(qū)和位置)一個以大寫字母開頭的更敏感的名稱.總而言之,您應(yīng)該更新代碼,使其看起來如下所示:
模型類,區(qū)域(只要它有意義,任意你想要的名稱),它應(yīng)該只代表一個實體:
public class Area {
private String location;
private String timezone;
public String getLocation() { return location; }
public String getTimezone() { return timezone; }
public void setLocation(String location) { this.location = location; }
public void setTimezone(String timezone) { this.timezone = timezone; }
}
基本連接管理器類,數(shù)據(jù)庫,這里只加載驅(qū)動程序一次,并為連接提供一個getter:
public class Database {
private String url;
private String username;
private String password;
public Database(String driver, String url, String username, String password) {
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
throw new RuntimeException("Driver class is missing in classpath", e);
}
this.url = url;
this.username = username;
this.password = password;
}
public Connection getConnection() {
return DriverManager.getConnection(url, username, password);
}
}
DAO類,AreaDAO,這里放置所有數(shù)據(jù)庫交互方法:
public class AreaDAO {
private Database database;
public AreaDAO(Database database) {
this.database = database;
}
public List list() throws SQLException {
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
List areas = new ArrayList();
try {
connection = database.getConnection();
statement = connection.prepareStatement("SELECT location, timezone FROM userclient");
resultSet = statement.executeQuery();
while (resultSet.next()) {
Area area = new Area();
area.setLocation(resultSet.getString("location"));
area.setTimezone(resultSet.getString("timezone"));
areas.add(area);
}
} finally {
if (resultSet != null) try { resultSet.close(); } catch (SQLException logOrIgnore) {}
if (statement != null) try { statement.close(); } catch (SQLException logOrIgnore) {}
if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {}
}
return areas;
}
}
最后,在servlet中初始化DAO一次并獲取HTTP方法中的列表:
public class AreaServlet extends HttpServlet {
private AreaDAO areaDAO;
public void init() throws ServletException {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/dbname";
String username = "user";
String password = "pass";
Database database = new Database(driver, url, username, password);
this.areaDAO = new AreaDAO(database);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
List areas = areaDAO.list();
request.setAttribute("areas", areas);
request.getRequestDispatcher("/WEB-INF/areas.jsp").forward(request, response);
} catch (SQLException e) {
throw new ServletException("Cannot retrieve areas", e);
}
}
}
將此servlet映射到web.xml中的/ areas區(qū)域的url-pattern上,以便您可以在http://example.com/contextname/areas之前調(diào)用它
/WEB-INF/areas.jsp看起來像這樣,假設(shè)您要顯示表中的區(qū)域:
| ${area.location} | ${area.timezone} |
也可以看看:
總結(jié)
以上是生活随笔為你收集整理的java 传递bean_Java:如何将值从类/ bean传递给servlet的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 命名空间跟作用域是什么关系_魏如萱许光汉
- 下一篇: eq值 推荐算法_C++实现十种排序算法