工程創建這里就不在累述了,直接從顯示User信息列表開始。
備注:我用的是servlet3的注解功能實現的,所以不需要配置web.xml
這是我的工程目錄:
首先我們創建實體類:
public class User implements Serializable{ private static final long serialVersionUID = 1L; public User() { } private Integer id; private String name; private String age; private String addrs; ......省略的get和set方法...... }
然后在index.jsp頁面中寫一個鏈接如下:<a href="listUser.do">顯示用戶列表</a>。
然后在src下創建com.servlet.servlet包並創建UserServlet類,
@WebServlet("/listUser.do")//此處使用的是servlet的注解,listUser.do要和index.jsp中的鏈接保持一致。 public class UserServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //獲取用戶列表 UserService userService=new UserService();//創建UserService對象, List list=userService.getListAll(); request.setAttribute("list", list); request.getRequestDispatcher("/jsp/success.jsp").forward(request, response);//跳轉到success.jsp頁面 } }
然后在創建對應的UserService類,
public class UserService { /** * 查詢 * @return */ public List<User> getListAll(){ UserDao userDao = new UserDaoImpl(); List list = userDao.getListAll(); return list; } }
最后創建UserDao接口和UserDaoImpl實現類
UserDao接口
public interface UserDao { /** * 獲取所有用戶 * @return List */ List<User> getListAll(); }
UserDaoImpl實現類
public class UserDaoImpl implements UserDao{ /** * 獲取所用用戶 */ @Override public List<User> getListAll() { List<User> list=new ArrayList<User>();//創建list集合,用於保持User對象 try { Connection conn=DBUtil.getConnection();//通過工具類直接調用getConnection方法獲取jdbc連接。 String sql="select * from user"; PreparedStatement ps=conn.prepareStatement(sql); ResultSet rs=ps.executeQuery(); while(rs.next()){ User user=new User();//創建User對象用於保持從數據看查出來的數據 user.setId(rs.getInt(1)); user.setName(rs.getString(2)); user.setAge(rs.getString(3)); user.setAddrs(rs.getString(4)); list.add(user); } } catch (SQLException e) { e.printStackTrace(); } return list; } }
連接數據庫的DBUtils工具類
public class DBUtil { private static final String URL="jdbc:mysql://localhost:3306/servlet";//數據庫名稱為servlet private static final String USER="root"; private static final String PASSWORD="1234"; private static Connection conn=null; static{ try { //加載驅動 Class.forName("com.mysql.jdbc.Driver"); //創建連接 conn=DriverManager.getConnection(URL, USER, PASSWORD); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } public static Connection getConnection(){ return conn; } }
最后我們創建返回用戶信息的success.jsp頁面
<body> <table border=1 cellpadding="10" cellspacing="0"> <tr> <th>id</th> <th>name</th> <th>age</th> <th>addrs</th> </tr> <c:forEach items="${list }" var="user">//這里使用的是jstl標簽以及el表達式顯示用戶信息 <tr> <th>${user.id }</th> <th>${user.name }</th> <th>${user.age }</th> <th>${user.addrs }</th> </tr> </c:forEach> </table> </body>
最后我們創建對應的數據庫以及user數據表,然后添加幾條數據,運行下項目。