JavaWeb知識學習——MVC模型示例

MVC 模型

Model:DAO獲取數據庫連接
View:JSP呈現數據
Controller:Servlet獲取請求參數

實例:

數據庫中用戶信息的展示和刪除等操作,連接數據庫並在頁面上顯示出來並可以實現刪除操作。
1、創建User及UserDao

public class User {
    private int id;
    private String Name;
    private  String pwd;
    private String sex;
    private String home;
    private String info;

    public User(int id, String name, String pwd, String sex, String home, String info) {
        this.id = id;
        Name = name;
        this.pwd = pwd;
        this.sex = sex;
        this.home = home;
        this.info = info;
    }

    public User() {

    }

    public int getId() {

        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getHome() {
        return home;
    }

    public void setHome(String home) {
        this.home = home;
    }

    public String getInfo() {
        return info;
    }

    public void setInfo(String info) {
        this.info = info;
    }
}

public class UserDao {
    //通過id刪除用戶
    public void  deleteById(int id){
        Connection connection=null;
        PreparedStatement preparedStatement=null;
        try {
            String driverClass="com.mysql.jdbc.Driver";
            String url="jdbc:mysql:///test";
            String user="root";
            String password="123456";
            Class.forName(driverClass);
            connection=DriverManager.getConnection(url,user,password);
            String sql="delete from user where id=?";
            preparedStatement=connection.prepareStatement(sql);
            preparedStatement.setInt(1,id);
                preparedStatement.executeUpdate();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
           if(preparedStatement!=null) {
                try {
                    preparedStatement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }if(connection!=null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }


    //獲取所有的用戶信息
    public List<User> getAll(){
        List<User> users=new ArrayList<>();
        Connection connection=null;
        PreparedStatement preparedStatement=null;
        ResultSet resultSet=null;
        try {
            String driverClass="com.mysql.jdbc.Driver";
            String url="jdbc:mysql:///test";
            String user="root";
            String password="123456";
            Class.forName(driverClass);
            connection=DriverManager.getConnection(url,user,password);
            String sql="select id,name,pwd,sex,home,info from user";
            preparedStatement=connection.prepareStatement(sql);
            resultSet=preparedStatement.executeQuery();
            while (resultSet.next()){
                int id=resultSet.getInt(1);
                String name=resultSet.getString(2);
                String pwd=resultSet.getString(3);
                String sex=resultSet.getString(4);
                String home=resultSet.getString(5);
                String info=resultSet.getString(6);
                User user1=new User(id,name,pwd,sex,home,info);
                users.add(user1);
            }

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(resultSet!=null) {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }if(preparedStatement!=null) {
                try {
                    preparedStatement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }if(connection!=null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        return users;
    }
}

2.創建刪除和查詢所需的Servlet
ListAllUsersServlet和DeleteUserServlet

public class ListAllUsersServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                UserDao userDao=new UserDao();
        List<User> users=userDao.getAll();
        request.setAttribute("users",users);
        request.getRequestDispatcher("/javaweb/users.jsp").forward(request,response);
       }
}

public class DeleteUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String id=request.getParameter("id");
    UserDao userDao=new UserDao();
    userDao.deleteById(Integer.parseInt(id));
    request.getRequestDispatcher("/javaweb/success.jsp").forward(request,response);

    }
}

創建完Servlet後在web.xml中配置如下

<servlet>
        <servlet-name>ListAllUsersServlet</servlet-name>
        <servlet-class>cn.javaweb2.com.ListAllUsersServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>DeleteUserServlet</servlet-name>
        <servlet-class>cn.javaweb2.com.DeleteUserServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>DeleteUserServlet</servlet-name>
        <url-pattern>/javaweb/deleteUser</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>ListAllUsersServlet</servlet-name>
        <url-pattern>/javaweb/listAllUsers</url-pattern>
    </servlet-mapping>

3.在web目錄下創建jsp頁面
test.jsp如下所示:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<a href="listAllUsers">List all Users</a>
</body>
</html>

user.jsp如下所示:

<%@ page import="java.util.List" %>
<%@ page import="cn.javaweb2.com.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<%
List<User> users=(List<User>) request.getAttribute("users");
%>
<table border="1"cellpadding="10"cellspacing="0">
    <tr>
        <th>id</th>
        <th>name</th>
        <th>pwd</th>
        <th>sex</th>
        <th>home</th>
        <th>info</th>
        <th>delete</th>
    </tr>
    <%
    for(User user:users){
        %>
    <tr>
        <td><%=user.getId()%></td>
        <td><%=user.getName()%></td>
        <td><%=user.getPwd()%></td>
        <td><%=user.getSex()%></td>
        <td><%=user.getHome()%></td>
        <td><%=user.getInfo()%></td>
        <td><a href="deleteUser?id=<%=user.getId()%>">delete</a></td>
    </tr>
   <% }%>
</table>
</body>
</html>

success.jsp頁面如下所示:


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
刪除成功
<hr>
<a href="listAllUsers">List all Users</a>
</body>
</html>

一個簡單的MVC模式的示例就完成了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章