• JSP的一个增删改查例子和总结


     总结的几点:

      1、在jsp中注意<%! %>声明代码块中的变量只会在项目开始的时候第一次运行jsp的时候执行一遍,有点类似于java类中的static代码块,所以如果是会改变的值不应该声明在这里面。而是卸载<%%>代码块中

      2、使用js中的location.href有时候就是无法生效,也就是无法跳转到你想要的页面。你可以在location.href语句后面加上 event.returnValue=false即可

      3、进行编辑一条信息或者删除信息的时候id字段可以使用隐藏域或者直接使用el传递。这样就不需要通过js找到id列或者其他了

      4、在增加的时候注意在servlet或者对应的jsp进行对象的补全

      5、在修改的时候如果有那种类似于下拉列表或者单选按钮的东西,可以使用jstl中的<c:if>实现选择。

    例子:

    CREATE TABLE profile(
     id NUMBER PRIMARY KEY,
     name VARCHAR2(20),
     birthday DATE,
     gender VARCHAR2(10),
     career VARCHAR2(20),
     address VARCHAR2(50),
     mobile VARCHAR2(11)
    );
    
    CREATE SEQUENCE seq_profile;
    
    package com.dao;
    
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.ResultSetHandler;
    import org.apache.commons.dbutils.handlers.BeanHandler;
    import org.apache.commons.dbutils.handlers.BeanListHandler;
    
    import com.domain.Profile;
    import com.jdbc.JdbcUtils;
    
    public class ProfileDao {
        /**
         * zeng
         * @param p
         * @throws SQLException
         */
        public void addProfile(Profile p) throws SQLException{
            String sql="INSERT INTO profile VALUES (seq_profile.NEXTVAL,?,?,?,?,?,?)";
            QueryRunner qr=new QueryRunner();
            Connection con=JdbcUtils.getConnection();
            Object[] params={p.getName(),p.getBirthday(),p.getGender(),p.getCareer(),p.getAddress(),p.getMobile()};
            qr.update(con, sql,params);
            JdbcUtils.releaseConnection(con);
        }
        
        public void deleteById(int id) throws SQLException{
            String sql="DELETE FROM profile WHERE id=?";
            QueryRunner qr=new QueryRunner();
            Connection con=JdbcUtils.getConnection();
            Object[] params={id};
            qr.update(con,sql, params);
            JdbcUtils.releaseConnection(con);
        }
        
        public void update(Profile p) throws SQLException{
            String sql="UPDATE profile SET name=?,birthday=?,gender=?,career=?,address=?,mobile=? WHERE id=?";
            QueryRunner qr=new QueryRunner();
            Connection con=JdbcUtils.getConnection();
            Object[] params={p.getName(),p.getBirthday(),p.getGender(),p.getCareer(),p.getAddress(),p.getMobile(),p.getId()};
        //    System.out.println(Arrays.toString(params));
            qr.update(con,sql, params);
            JdbcUtils.releaseConnection(con);
        }
        
        public ArrayList<Profile> findAll() throws SQLException{
            String sql="SELECT * FROM profile";
            QueryRunner qr=new QueryRunner();
            Connection con=JdbcUtils.getConnection();
            ResultSetHandler<List<Profile>> rsh=new BeanListHandler<Profile>(Profile.class);
            ArrayList<Profile> profiles=(ArrayList<Profile>) qr.query(con, sql, rsh);
            JdbcUtils.releaseConnection(con);
            return profiles;
        }
        
        public Profile load(int id) throws SQLException{
            String sql="SELECT * FROM profile WHERE id=?";
            QueryRunner qr=new QueryRunner();
            Object[] params={id};
            Connection con=JdbcUtils.getConnection();
            ResultSetHandler<Profile> rsh=new BeanHandler<Profile>(Profile.class);
            Profile profile= (Profile) qr.query(con, sql, rsh,params);
            JdbcUtils.releaseConnection(con);
            return profile;
        }
    
    }
    
    package com.domain;
    
    import java.io.Serializable;
    import java.sql.Date;
    
    
    public class Profile implements Serializable{
        
        private static final long serialVersionUID = 1L;
        private int id;
        private String name;
        private Date birthday;
        private String gender;
        private String career;
        private String address;
        private String mobile;
        @Override
        public String toString() {
            return "Profile [id=" + id + ", name=" + name + ", birthday="
                    + birthday + ", gender=" + gender + ", career=" + career
                    + ", address=" + address + ", mobile=" + mobile + "]";
        }
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Date getBirthday() {
            return birthday;
        }
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
        public String getGender() {
            return gender;
        }
        public void setGender(String gender) {
            this.gender = gender;
        }
        public String getCareer() {
            return career;
        }
        public void setCareer(String career) {
            this.career = career;
        }
        public String getAddress() {
            return address;
        }
        public void setAddress(String address) {
            this.address = address;
        }
        public String getMobile() {
            return mobile;
        }
        public void setMobile(String mobile) {
            this.mobile = mobile;
        }
        public Profile() {
            super();
            // TODO Auto-generated constructor stub
        }
        public Profile(int id, String name, Date birthday, String gender,
                String career, String address, String mobile) {
            super();
            this.id = id;
            this.name = name;
            this.birthday = birthday;
            this.gender = gender;
            this.career = career;
            this.address = address;
            this.mobile = mobile;
        }
        
    }
    
    package com.jdbc;
    
    import java.sql.Connection;
    import java.sql.SQLException;
    
    import javax.sql.DataSource;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    
    public class JdbcUtils {
        /*
         * 配置文件的恶魔人配置!要求你必须给出c3p0-config。xnl!
         */
        private static ComboPooledDataSource dataSource=new ComboPooledDataSource("oracle-config");
        /**
         * 它是事务专用连接
         */
        private static Connection con=null;
        /**
         * 使用连接池返回一个连接对象
         * @return
         * @throws SQLException
         */
        public static Connection getConnection() throws SQLException{
            //当con!=null,表示已经调用过beginTransaction方法了
            if(con!=null) return con;
            return dataSource.getConnection();
        }
        
        /**
         * 返回连接池对象
         * @return
         */
        public static DataSource getDataSource(){
            return dataSource;
        }
        /**
         * 1、开启一个Connection,设置它的setAutoCommit(false)
         * 2、还要保证dao中使用的连接是我们刚刚创建的
         * ------------------------
         * 1、创建一个Connection,设置为手动提交
         * 2、把这个Connection给dao用
         * 3、还要让commitTransaction或rollbackTransaction可以获取到
         * @throws SQLException 
         */
        public static void beignTransaction() throws SQLException{
            if(con!=null) throw new SQLException("已经开始了事务,就不要继续开启事务了!");
            con=getConnection();
            con.setAutoCommit(false);
        }
        /**
         * 提交事务
         * 获取之前开启的Connection,兵提交
         * @throws SQLException 
         */
        public static void commitTransaction() throws SQLException{
            if(con==null) throw new SQLException("还没有开启事务,不能提交!");
            con.commit();
            con.close();
            con=null;//因为前面的close()不会销毁连接而是放回连接池
        }
        /**
         * 回滚事务
         * 获取之前开启的Connection,兵回滚
         * @throws SQLException 
         */
        public static void rollbackTransaction() throws SQLException{
            if(con==null) throw new SQLException("还没有开启事务,不能提交!");
            con.rollback();
            con.close();
            con=null;//因为前面的close()不会销毁连接而是放回连接池
        }
        
        public static void releaseConnection(Connection connection) throws SQLException{
            /*
             *判斷它是不是中事務專用,如果是就不關閉
             *如果不是就要關閉
             */
            //如果con==null,說明沒有事務,那麼connection一定不是事務專用的
            if(con==null)    connection.close();
            if(con!=connection) connection.close();
            
        }
    }
    
    package com.service;
    
    import java.sql.SQLException;
    import java.util.ArrayList;
    
    import com.dao.ProfileDao;
    import com.domain.Profile;
    
    public class ProfileService {
        
        private ProfileDao profileDao=new ProfileDao();
        
        public void addProfile(Profile p){
            try {
                profileDao.addProfile(p);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
        public void deleteProfile(int id){
            try {
                profileDao.deleteById(id);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
        public void updateProfile(Profile p){
            try {
                profileDao.update(p);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
        public ArrayList<Profile> findAll(){
            try {
                return profileDao.findAll();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
        
        public Profile findById(int id){
            try {
                return profileDao.load(id);
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    }
    
    package com.test;
    
    import java.sql.Date;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    
    import org.junit.Test;
    
    import com.domain.Profile;
    import com.service.ProfileService;
    
    public class Test01 {
        
        @Test
        public void fun1() throws ParseException{
            ProfileService ps=new ProfileService();
            Profile p=new Profile();
            p.setName("liu");
            
            p.setBirthday(geDate("1994-10-12"));
            p.setAddress("江西");
            p.setGender("女");
            p.setMobile("8482973");
            p.setCareer("学生");
            ps.addProfile(p);
    //        p.setCareer("工人");
    //        p.setId(1);
    //        ps.updateProfile(p);
    //        System.out.println(ps.findAll());
    //        System.out.println(ps.findById(1));
        }
        
        public Date geDate(String date) throws ParseException{
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            return new Date(sdf.parse(date).getTime());
        }
    }
    
    <?xml version="1.0" encoding="UTF-8" ?>
    <c3p0-config>
        <!-- 默认连接配置 -->
        <default-config> 
            <!-- 连接四大参数配置  -->
            <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/demo</property>
            <property name="driverClass">com.mysql.jdbc.Driver</property>
            <property name="user">guodaxia</property>
            <property name="password">961012gz</property>
                <!-- 池参数配置 -->
            <property name="acquireIncrement">3</property>
            <property name="initialPoolSize">10</property>
            <property name="minPoolSize">2</property>
            <property name="maxPoolSize">10</property>
        </default-config>
        
        <named-config name="oracle-config">
            <!-- 连接四大参数配置  -->
            <property name="jdbcUrl">jdbc:oracle:thin:@localhost:1521:db</property>
            <property name="driverClass">oracle.jdbc.driver.OracleDriver</property>
            <property name="user">scott</property>
            <property name="password">961012gz</property>        
            <property name="acquireIncrement">3</property>
            <property name="initialPoolSize">10</property>
            <property name="minPoolSize">2</property>
            <property name="maxPoolSize">10</property>
        </named-config>
        
    </c3p0-config>
    
    $(function(){
        
        $("button[name='show']").click(function(){
            var id=$($(this).parents("tr").find("td")[0]).text();
            //alert(id);
            window.location.href="detail.jsp?id="+id;
        });
        
        $("button[name='alert']").click(function(){
            var id=$($(this).parents("tr").find("td")[0]).text();
            //alert(id);
            window.location.href="update.jsp?id="+id;
        });
    
        $("button[name='delete']").click(function(){
            var id=$($(this).parents("tr").find("td")[0]).text();
            //alert(id);
            window.location.href="delete.jsp?id="+id;
        });
        
    });
    
    $(function(){
        
        
        $("option").each(function(){
            var v1=$("#hhh").val();
            var v2=$(this).val();
            //alert($("#hhh").val()+"   "+$(this).val());
            if(v1==v2){
                $(this).attr("selected",true);
            }
        });
        
        $("button[name='back'").click(function(){
            //alert(1);
            window.location.href="list.jsp?date="+new Date().getTime();
            event.returnValue=false;
        });
        
    });
    
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
      </head>
      
      <body>
        <% 
            response.sendRedirect(path+"/list.jsp");
        %>
      </body>
    </html>
    
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ page import="com.domain.Profile,java.sql.Date,com.service.ProfileService,java.text.SimpleDateFormat" %>
    
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'list.jsp' starting page</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
        <style type="text/css">
            td{
            /* 80px; */
             border:1px solid;
            }
            table{
             border:1px solid;
            }
            #tr1{
            background-color: yellow;
            }
        </style>
        <script type="text/javascript" src="js/jquery1.8.3.js"></script>
        <script type="text/javascript" src="js/list.js"></script>
      </head>
      <% 
              ProfileService ps=new ProfileService();
              ArrayList<Profile> profiles=ps.findAll();
      %>
          <%!
              
              String date2Str(Date d){
                  SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
                  return sdf.format(d);
              }
          %>
      <body>
        <table>
            <tr id="tr1">
                <td>编号</td>
                <td>姓名</td>
                <td>生日</td>
                <td>性别</td>
                <td>职业</td>
                <td>住所</td>
                <td>电话</td>
                <td>操作</td>
            </tr>
            <%for(Profile p:profiles){%>
            <tr>
                <td><%=p.getId() %></td>
                <td><%=p.getName() %></td>
                <td><%=date2Str(p.getBirthday()) %></td>
                <td><%=p.getGender() %></td>
                <td><%=p.getCareer() %></td>
                <td><%=p.getAddress() %></td>
                <td><%=p.getMobile() %></td>
                <td>
                    <button name="show" >明细</button>
                    <button  name="alert" >修改</button>
                    <button name="delete" >删除</button>
                </td>
            </tr>
            <%
            }
            %>
            
        </table>
      </body>
    </html>
    
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ page import="com.domain.Profile,java.sql.Date,com.service.ProfileService,java.text.SimpleDateFormat" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'update.jsp' starting page</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
        
        <style type="text/css">
            table{
                border:1px solid;
            }
            td{
                border:1px solid;
            }
        </style>
        <script type="text/javascript" src="js/jquery1.8.3.js"></script>
        <script type="text/javascript" src="js/update.js"></script>
      </head>
      
      <body>
        <%!
               Profile p=null;
              String date2Str(Date d){
                  SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
                  return sdf.format(d);
              }
          %>
          <%
              Integer i=Integer.valueOf(request.getParameter("id"));
              ProfileService ps=new ProfileService();
              p=ps.findById(i);
          %>
          <form action="utu.jsp" method="post">
           <table>
            <tr>
                <td>编号</td>
                <td><input name="id" type="text" value="<%=p.getId() %>" readonly></td>
            </tr>
            <tr>
                <td>姓名</td>
                <td><input name="name" type="text" value="<%=p.getName() %>" ></td>
            </tr>
            <tr>
                <td>生日</td>
                <td><input name="birthday" type="text" value="<%=p.getBirthday() %>" ></td>
            </tr>
            <tr>
                <td>性别</td>
                <td>
                    <select name="gender">
                        <option value="女">女</option>
                        <option value="男">男</option>
                    </select>
                    <input id="hhh" type="hidden" value="<%=p.getGender() %>">
                </td>
            </tr>
            <tr>
                <td>职业</td>
                <td><input name="career" type="text" value="<%=p.getCareer() %>" ></td>
            </tr>
            <tr>
                <td>住所</td>
                <td><input name="address" type="text" value="<%=p.getAddress() %>" ></td>
            </tr>
            <tr>
                <td>电话</td>
                <td><input name="mobile" type="text" value="<%=p.getMobile() %>" ></td>
            </tr>
        </table>
        <input type="submit" value="修改">
        <button name="back">返回</button>
        </form>
      </body>
    </html>
    
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ page import="com.domain.Profile,java.sql.Date,com.service.ProfileService,java.text.SimpleDateFormat,java.text.ParseException" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <%!
        Date str2Date(String str)throws  ParseException{
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            return new Date(sdf.parse(str).getTime());
        }
    %>
    
    <%
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        
        int id=Integer.parseInt(request.getParameter("id"));
        String name=request.getParameter("name");
        Date birthday=str2Date(request.getParameter("birthday"));
        String gender=request.getParameter("gender");
        String career=request.getParameter("career");
        String address=request.getParameter("address");
        String mobile=request.getParameter("mobile");
        
        System.out.println(id+"---"+name+"--"+birthday+"--"+gender+"--"+career+"--"+address+"--"+mobile);
        Profile p=new Profile();
        p.setId(id);
        p.setName(name);
        p.setBirthday(birthday);
        p.setGender(gender);
        p.setCareer(career);
        p.setAddress(address);
        p.setMobile(mobile);
        
        ProfileService ps=new ProfileService();
        ps.updateProfile(p);
        
        response.sendRedirect(path+"/update.jsp?id="+id);
        
    %>
    
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ page import="com.domain.Profile,java.sql.Date,com.service.ProfileService,java.text.SimpleDateFormat" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'detail.jsp' starting page</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
        <style type="text/css">
            table{
                border:1px solid;
            }
            td{
                border:1px solid;
            }
        </style>
      </head>
       <%!
               Profile p=null;
              String date2Str(Date d){
                  SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
                  return sdf.format(d);
              }
          %>
          <%
              Integer i=Integer.valueOf(request.getParameter("id"));
              ProfileService ps=new ProfileService();
              p=ps.findById(i);
          %>
     
      
      <body>
        <table>
            <tr>
                <td>编号</td>
                <td><%=p.getId() %></td>
            </tr>
            <tr>
                <td>姓名</td>
                <td><%=p.getName() %></td>
            </tr>
            <tr>
                <td>生日</td>
                <td><%=p.getBirthday() %></td>
            </tr>
            <tr>
                <td>性别</td>
                <td><%=p.getGender() %></td>
            </tr>
            <tr>
                <td>职业</td>
                <td><%=p.getCareer() %></td>
            </tr>
            <tr>
                <td>住所</td>
                <td><%=p.getAddress() %></td>
            </tr>
            <tr>
                <td>电话</td>
                <td><%=p.getMobile() %></td>
            </tr>
        </table>
        <button onclick="javascript:history.go(-1)">返回</button>
      </body>
    </html>
    
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ page import="com.domain.Profile,java.sql.Date,com.service.ProfileService,java.text.SimpleDateFormat" %>
    <% 
        int id=Integer.parseInt(request.getParameter("id"));
        ProfileService ps=new ProfileService();
        ps.deleteProfile(id);
        response.sendRedirect(request.getContextPath()+"/list.jsp?date="+System.currentTimeMillis());
    %>
    View Code

    jar:

      

  • 相关阅读:
    生活娱乐 工业机器人代替工人装配鼠标键盘
    生活娱乐 工商银行如何查询开户行
    生活娱乐 格力空气能热水器怎么样
    生活娱乐 岛城将开首家机器人餐厅
    生活娱乐 毕业生论文查重技巧
    Windows 老是弹出要自动拨号连接怎么办
    Office 针式打印机如何调节边距
    Office 如何打印彩色照片能取得较好的效果
    西游释厄传如何设置简化出招表
    [ES2019] Use JavaScript ES2019 flatMap to Map and Filter an Array
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/5727041.html
Copyright © 2020-2023  润新知