Java / } }
" "Java / } },java,mysql,jsp,jdbc,Java,Mysql,Jsp,Jdbc," " ${star.id} ${star.first_name} ${star.last_name} ${star.dob} ${star.photo_url} ${movie.id} “经过一番思考后,我决定从另一个方向着手,创建一个包含前两个类的私有字段的类。通过使用单个类,我可以进行单个SQL查询,而不是两个单独的查询。它不能解决我之前的问题,但它可以工作。通常每个应用程序只有一个servlet。这会让事情变得更容易。我只是把它分开,这样事情就不会变得混乱和难以阅读了 public
${star.id}
${star.first_name}
${star.last_name}
${star.dob}
${star.photo_url}
${movie.id}
“经过一番思考后,我决定从另一个方向着手,创建一个包含前两个类的私有字段的类。通过使用单个类,我可以进行单个SQL查询,而不是两个单独的查询。它不能解决我之前的问题,但它可以工作。通常每个应用程序只有一个servlet。这会让事情变得更容易。我只是把它分开,这样事情就不会变得混乱和难以阅读了
public class GenreServlet extends HttpServlet
{
String query;
List<Genre> genreList;
List<Movie> genreSelect;
List<Star> starSelect;
@Override
public void init(ServletConfig config) throws ServletException
{
query = null;
genreList = null;
genreSelect = null;
ServletContext context = config.getServletContext();
context.getRequestDispatcher("/jsp/genrelist.jsp");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
query = req.getParameter("query");
if(query == null)
{
try
{
genreList = new GenreDAO().genreList();
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
req.getSession().setAttribute("genres", genreList);
req.getRequestDispatcher("/jsp/genrelist.jsp").forward(req, resp);
}
else
{
try
{
genreSelect = new MovieDAO().findMoviesFromGenre(query);
starSelect = new StarDAO().findStarsFromMovies(genreSelect);
}
catch(Exception e)
{
e.printStackTrace();
}
req.getSession().setAttribute("movies", genreSelect);
req.getSession().setAttribute("starlist", starSelect);
req.getRequestDispatcher("/jsp/movielist.jsp").forward(req, resp);
}
}
}
public class StarDAO
{
public List<Star> findStarsFromMovies(List<Movie> movieList) throws Exception
{
List<Star> result = new ArrayList<Star>();
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/";
String dbName = "moviedb";
String user = "andrew";
String password = "bg79jd7c";
String sql = "select * from stars where id in (select star_id from stars_in_movies where"
+ " movie_id in (select id from movies where title = ?));";
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
for(Movie movie: movieList)
{
try
{
Class.forName(driver).newInstance();
connection = DriverManager.getConnection(url + dbName, user, password);
statement = connection.prepareStatement(sql);
statement.setString(1, movie.getTitle());
resultSet = statement.executeQuery();
while(resultSet.next())
{
Star star = new Star();
star.setId(resultSet.getInt("id"));
star.setFirstName(resultSet.getString("first_name"));
star.setLastName(resultSet.getString("last_name"));
star.setDOB(resultSet.getString("dob"));
star.setPhoto(resultSet.getString("photo_url"));
result.add(star);
}
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
if (resultSet != null) try { resultSet.close(); } catch (SQLException ignore) {}
if (statement != null) try { statement.close(); } catch (SQLException ignore) {}
if (connection != null) try { connection.close(); } catch (SQLException ignore) {}
}
}
return result;
}
}
public class MovieListServlet extends HttpServlet
{
List<Movie> movieItems;
List<Star> starList;
String query;
Movie movie;
@Override
public void init(ServletConfig config) throws ServletException
{
query = null;
movie = null;
ServletContext context = config.getServletContext();
context.getRequestDispatcher("/jsp/movielist.jsp");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
try
{
movieItems = (List<Movie>) req.getAttribute("movies");
req.getSession().setAttribute("movies", movieItems);
starList = (List<Star>) req.getAttribute("starlist");
req.getSession().setAttribute("stars", starList);
req.getRequestDispatcher("/jsp/movielist.jsp").forward(req, resp);
}
catch(Exception e)
{
System.out.println(e);
}
/**
try
{
movieItems = new MovieDAO().movieList();
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
req.getSession().setAttribute("movies", movieItems);
req.getRequestDispatcher("/jsp/movielist.jsp").forward(req, resp);
*/
}
}
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<table>
<a href="home">Home</a>
<c:forEach var="star" items="${stars}">
<tr>
<td>${star.id}</td>
<td>${star.first_name}</td>
<td>${star.last_name}</td>
<td>${star.dob}</td>
<td>${star.photo_url}</td>
</tr>
</c:forEach>
<c:forEach var="movie" items="${movies}">
<tr>
<td>${movie.id}</td>
<td><a href="movies?query=${movie.id}"> ${movie.title}</td>
<td>${movie.year}</td>
<td>${movie.director}</td>
<td> <img src ="${movie.banner}"></td>
<td><a href="${movie.trailer}">trailer</a></td>
</tr>
</c:forEach>
</table>