<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我的漫漫程序之旅

    專注于JavaWeb開發
    隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
    數據加載中……

    Servlet + FreeMarker 簡單實現CRUD

    1.數據庫腳本:

    drop table users

    create table users
    (
     id 
    int primary key identity(1,1),
     username 
    varchar(50)
    )

    drop proc adduser

    create proc adduser
    as
       
    declare @i int
       
    set @i  = 1
      
    begin 
        
    while(@i <= 100
        
    begin
         
    insert into users values('name' + convert(varchar(10),@i))
           
    set @i = @i + 1
        
    end
     
      
    end    
    go

    exec adduser

    select count(*as rows from users

    2.數據庫連接類:
    package com.db;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;

    /**
     * 數據庫連接類
     * 
     * 
    @author zdw
     * 
     
    */

    public class DB
    {
        
    private static final String DBDRIVER = "net.sourceforge.jtds.jdbc.Driver";
        
    private static final String DBURL = "jdbc:jtds:sqlserver://localhost:1433/pubs;user=sa;pwd=";

        
    private DB()
        
    {
        }


        
    public static DB getInstance()
        
    {
            
    return new DB();
        }


        
    public Connection getConn()
        
    {
            Connection conn 
    = null;
            
    try
            
    {
                Class.forName(DBDRIVER);
                conn 
    = DriverManager.getConnection(DBURL);
            }
     catch (ClassNotFoundException e)
            
    {
                e.printStackTrace();
            }
     catch (SQLException e)
            
    {
                e.printStackTrace();
            }

            
    return conn;
        }


    }


    3.UserDAO:
    package com.dao;

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;

    import com.db.DB;
    import com.vo.User;

    /*******************************************************************************
     * userdao 對用戶實現增刪改查
     * 
     * 
    @author zdw
     * 
     
    */

    public class UserDAO
    {
        
    public List<User> queryAll()
        
    {
            List
    <User> list = new ArrayList<User>();
            String sql 
    = "select * from users";
            Connection conn 
    = DB.getInstance().getConn();
            
    try
            
    {
                PreparedStatement pstmt 
    = conn.prepareStatement(sql);
                ResultSet rs 
    = pstmt.executeQuery();
                
    while (rs.next())
                
    {
                    User user 
    = new User();
                    user.setId(rs.getInt(
    "id"));
                    user.setName(rs.getString(
    "name"));
                    list.add(user);
                }

            }
     catch (SQLException e)
            
    {
                e.printStackTrace();
            }
     finally
            
    {
                
    try
                
    {
                    conn.close();
                }
     catch (SQLException e)
                
    {
                    e.printStackTrace();
                }

            }

            
    return list;
        }


        
    public User queryById(Integer id)
        
    {
            User user 
    = null;
            String sql 
    = "select * from users where id = ?";
            Connection conn 
    = DB.getInstance().getConn();
            
    try
            
    {
                PreparedStatement pstmt 
    = conn.prepareStatement(sql);
                pstmt.setInt(
    1, id);
                ResultSet rs 
    = pstmt.executeQuery();
                
    while (rs.next())
                
    {
                    user 
    = new User();
                    user.setId(rs.getInt(
    "id"));
                    user.setName(rs.getString(
    "name"));
                }

            }
     catch (SQLException e)
            
    {
                e.printStackTrace();
            }
     finally
            
    {
                
    try
                
    {
                    conn.close();
                }
     catch (SQLException e)
                
    {
                    e.printStackTrace();
                }

            }

            
    return user;
        }


        
    public void save(User user)
        
    {
            String sql 
    = "insert into users values(?)";
            Connection conn 
    = DB.getInstance().getConn();
            
    try
            
    {
                PreparedStatement pstmt 
    = conn.prepareStatement(sql);
                pstmt.setString(
    1, user.getName());
                pstmt.executeUpdate();
            }
     catch (SQLException e)
            
    {
                e.printStackTrace();
            }
     finally
            
    {
                
    try
                
    {
                    conn.close();
                }
     catch (SQLException e)
                
    {
                    e.printStackTrace();
                }

            }

        }


        
    public void update(User user)
        
    {
            String sql 
    = "update users set name = ? where id = ?";
            Connection conn 
    = DB.getInstance().getConn();
            
    try
            
    {
                PreparedStatement pstmt 
    = conn.prepareStatement(sql);
                pstmt.setString(
    1, user.getName());
                pstmt.setInt(
    2, user.getId());
                pstmt.executeUpdate();
            }
     catch (SQLException e)
            
    {
                e.printStackTrace();
            }
     finally
            
    {
                
    try
                
    {
                    conn.close();
                }
     catch (SQLException e)
                
    {
                    e.printStackTrace();
                }

            }

        }


        
    public void delete(Integer id)
        
    {
            String sql 
    = "delete from users where id = ?";
            Connection conn 
    = DB.getInstance().getConn();
            
    try
            
    {
                PreparedStatement pstmt 
    = conn.prepareStatement(sql);
                pstmt.setInt(
    1, id);
                pstmt.executeUpdate();
            }
     catch (SQLException e)
            
    {
                e.printStackTrace();
            }
     finally
            
    {
                
    try
                
    {
                    conn.close();
                }
     catch (SQLException e)
                
    {
                    e.printStackTrace();
                }

            }

        }


    }

    4.UserServlet:
    package com.web;

    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import com.dao.UserDAO;
    import com.vo.User;

    import freemarker.template.Configuration;
    import freemarker.template.Template;
    import freemarker.template.TemplateException;

    @SuppressWarnings(
    "serial")
    public class UserServlet extends HttpServlet
    {
        
    private Configuration cfg = null;

        @Override
        
    public void init() throws ServletException
        
    {
            cfg 
    = new Configuration();
            cfg.setServletContextForTemplateLoading(
    this.getServletContext(), null);
        }


        @SuppressWarnings(
    "unchecked")
        @Override
        
    protected void doGet(HttpServletRequest req, HttpServletResponse res)
                
    throws ServletException, IOException
        
    {
            
    // 網站全路徑
            String basePath = req.getScheme() + "://" + req.getServerName() + ":"
                    
    + req.getServerPort() + req.getContextPath() + "/";
            
    // 得到要操作的方法名
            String method = req.getParameter("method");

            Map map 
    = new HashMap();
            map.put(
    "path", basePath);
            
    // 設置編碼
            res.setCharacterEncoding("gbk");
            
    // 得到輸出流
            PrintWriter out = res.getWriter();
            Template t 
    = null;
            
    // 查詢所有用戶
            if (method.equals("queryAll"))
            
    {
                List list 
    = this.doQueryAll(req, res);
                map.put(
    "list", list);
                t 
    = cfg.getTemplate("WEB-INF/templates/index.ftl");
                System.out.println(
    "ssdfs");
            }

            
    // 添加用戶前的跳轉
            if (method.equals("forwardSave"))
            
    {
                t 
    = cfg.getTemplate("WEB-INF/templates/form.ftl");
            }

            
    // 保存用戶
            if (method.equals("save"))
            
    {
                System.out.println(
    "save");
                
    this.doSave(req, res);
                req.getRequestDispatcher(
    "/UserServlet?method=queryAll").forward(
                        req, res);
                
    return;
            }

            
    // 刪除用戶
            if (method.equals("delete"))
            
    {
                
    this.doDel(req, res);
                req.getRequestDispatcher(
    "/UserServlet?method=queryAll").forward(
                        req, res);
                
    return;
            }

            
    // 更新用戶前的跳轉
            if (method.equals("forwardUpdate"))
            
    {
                Integer id 
    = Integer.parseInt(req.getParameter("id"));
                UserDAO userDAO 
    = new UserDAO();
                User user 
    = userDAO.queryById(id);
                map.put(
    "user", user);
                t 
    = cfg.getTemplate("WEB-INF/templates/update.ftl");
            }

            
    // 更新用戶
            if (method.equals("update"))
            
    {
                
    this.doUpdate(req, res);
                req.getRequestDispatcher(
    "/UserServlet?method=queryAll").forward(
                        req, res);
                
    return;
            }

            
    try
            
    {
                
    // 處理map和輸出流
                t.process(map, out);
                out.flush();
                out.close();
            }
     catch (TemplateException e)
            
    {
                e.printStackTrace();
            }


        }


        
    private void doSave(HttpServletRequest req, HttpServletResponse res)
        
    {
            String username 
    = req.getParameter("username");
            System.out.println(
    "username:" + username);
            UserDAO userDAO 
    = new UserDAO();
            User user 
    = new User();
            user.setName(username);
            userDAO.save(user);
        }


        
    private void doUpdate(HttpServletRequest req, HttpServletResponse res)
        
    {
            Integer id 
    = Integer.parseInt(req.getParameter("id"));
            String username 
    = req.getParameter("username");
            UserDAO userDAO 
    = new UserDAO();
            User user 
    = new User();
            user.setId(id);
            user.setName(username);
            userDAO.update(user);
        }


        
    private List<User> doQueryAll(HttpServletRequest req,
                HttpServletResponse res)
        
    {
            UserDAO userDAO 
    = new UserDAO();
            List
    <User> users = userDAO.queryAll();
            
    return users;
        }


        
    private void doDel(HttpServletRequest req, HttpServletResponse res)
        
    {
            Integer id 
    = Integer.parseInt(req.getParameter("id"));
            UserDAO userDAO 
    = new UserDAO();
            userDAO.delete(id);
        }


        @Override
        
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                
    throws ServletException, IOException
        
    {
            
    this.doGet(req, resp);
        }


    }

    5.web.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation
    ="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    >
        
    <servlet>
            
    <servlet-name>UserServlet</servlet-name>
            
    <servlet-class>com.web.UserServlet</servlet-class>
        
    </servlet>

        
    <servlet-mapping>
            
    <servlet-name>UserServlet</servlet-name>
            
    <url-pattern>/UserServlet</url-pattern>
        
    </servlet-mapping>

        
    <welcome-file-list>
            
    <welcome-file>index.jsp</welcome-file>
        
    </welcome-file-list>
    </web-app>
    6.模板文件index.ftl:
    <html>
    <head><title>用戶管理首頁</title></head>
    <href="${path}UserServlet?method=forwardSave">添加用戶</a>
         
    <table border=1>
             
    <tr>
                 
    <td>用戶id</td>
                 
    <td>用戶名</td>
                 
    <td>操作</td>
                 
    <td>操作</td>
             
    </tr>
             
    <#list list as user>
                 
    <tr>
                     
    <td>${user.id}</td>
                     
    <td>${user.name}</td>
                     
    <td><href="${path}UserServlet?method=forwardUpdate&id=${user.id}">修改</a></td>
                     
    <td><href="${path}UserServlet?method=delete&id=${user.id}">刪除</a></td>
                 
    </tr>
             
    </#list>
         
    </table>
    </body>
    </html>

    update.ftl:
    <html>
    <head><title>修改用戶</title></head>
    <body>
    修改用戶
         
    <form method="post" action="${path}UserServlet?method=update&id=${user.id}">
               username: 
    <input type="text" name="username" value="${user.name}"/><br />
               
    <input type="submit" value="修改" />
               
    <input type="reset" value="重置" />
         
    </form>
    </body>
    </html>
    form.ftl:
    <html>
    <head><title>增加用戶</title></head>
    <body>
    添加用戶
         
    <form method="post" action="${path}UserServlet?method=save">
               username: 
    <input type="text" name="username" /><br />
               
    <input type="submit" value="添加" />
               
    <input type="reset" value="重置" />
         
    </form>
    </body>
    </html>


    源碼下載

    posted on 2008-06-06 09:38 々上善若水々 閱讀(3508) 評論(3)  編輯  收藏 所屬分類: opensource

    評論

    # re: Servlet + FreeMarker 簡單實現CRUD  回復  更多評論   

    很詳細,受益了,謝謝!
    2011-03-17 21:23 | citymoon

    # re: Servlet + FreeMarker 簡單實現CRUD  回復  更多評論   

    2014-03-12 16:08 |

    # re: Servlet + FreeMarker 簡單實現CRUD  回復  更多評論   

    好像缺東西吧,要怎么run起來呢?
    2014-03-12 16:08 |
    主站蜘蛛池模板: 女性无套免费网站在线看| 视频免费1区二区三区| 亚洲宅男天堂a在线| 亚洲视频国产精品| 91久久亚洲国产成人精品性色| 国产亚洲精久久久久久无码| 中文亚洲AV片在线观看不卡| 亚洲精品无码久久久久去q | a级在线免费观看| 久久免费美女视频| 免费国产在线视频| 97视频免费观看2区| 波多野结衣免费在线| 日韩精品成人无码专区免费| 免费观看的毛片手机视频| 免费看的一级毛片| 亚洲国产精品人人做人人爱| 三上悠亚亚洲一区高清| 亚洲AV无码乱码国产麻豆穿越| 亚洲日韩图片专区第1页| 亚洲理论在线观看| 亚洲精品永久在线观看| 国产午夜亚洲精品不卡电影| 国产精品视频全国免费观看| 毛片在线全部免费观看| 3d成人免费动漫在线观看| 久久WWW免费人成人片| 又粗又大又硬又爽的免费视频 | 日韩av无码久久精品免费| 亚洲毛片在线免费观看| 最近2019中文字幕mv免费看| 四虎影视在线永久免费观看| 激情97综合亚洲色婷婷五| 亚洲AV人人澡人人爽人人夜夜| 亚洲人成网站日本片| 激情小说亚洲图片| 国产成人免费ā片在线观看老同学| 182tv免费观看在线视频| 免费看无码自慰一区二区| 中文字幕第一页亚洲| 亚洲国产av美女网站|