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>