<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 々上善若水々 閱讀(3513) 評論(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 |
    主站蜘蛛池模板: 国产精品免费AV片在线观看| 亚洲无砖砖区免费| 亚洲综合小说另类图片动图| 一个人免费观看www视频| 国产成人免费A在线视频| 精品国产污污免费网站入口在线| 国内自产少妇自拍区免费| 国产免费久久精品99久久| 亚洲精品成人av在线| 免费黄网在线观看| 手机看片国产免费永久| 亚洲精品国产日韩| 亚洲色无码专区在线观看| 国产高潮久久免费观看| 国产自偷亚洲精品页65页| 99无码人妻一区二区三区免费 | 免费一级特黄特色大片在线观看| a毛片免费全部在线播放**| 亚洲色精品VR一区区三区| 人人狠狠综合久久亚洲婷婷| 啦啦啦在线免费视频| 久久精品一本到99热免费| 四虎影视永久在线精品免费| 亚洲国产精品综合久久久| 久久精品亚洲乱码伦伦中文| 女人毛片a级大学毛片免费| 久久免费区一区二区三波多野| 最新亚洲人成网站在线观看| 亚洲网站在线免费观看| 成年女人毛片免费播放视频m| 亚洲一久久久久久久久| 亚洲AV本道一区二区三区四区| 四虎永久在线精品免费观看地址 | 免费一级毛片不卡不收费| 免费观看美女用震蛋喷水的视频 | 国产亚洲日韩在线三区| 精品久久洲久久久久护士免费| 最近免费mv在线电影| 拍拍拍无挡免费视频网站| 永久免费无码日韩视频| 亚洲精品精华液一区二区|