Unix-2-CRUD-分页+模糊查询-状态更改

框架:spring+springMVC+myBatis
jar包
jar包
applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"

     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:context="http://www.springframework.org/schema/context"

     xmlns:jdbc="http://www.springframework.org/schema/jdbc"
     xmlns:jee="http://www.springframework.org/schema/jee"

     xmlns:tx="http://www.springframework.org/schema/tx"
     xmlns:aop="http://www.springframework.org/schema/aop"
     xmlns:mvc="http://www.springframework.org/schema/mvc"
     xmlns:util="http://www.springframework.org/schema/util"
     xmlns:jpa="http://www.springframework.org/schema/data/jpa"
     xsi:schemaLocation="
          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
          http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
          http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
          http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
          http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
          http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
          http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
          http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">
          <!-- 一.整合myBatis:1.2.3 -->
     <!-- 1.导入连接数据库的文件 -->
     <util:properties id="jdbc" location="classpath:jdbc.properties"/>
     <!-- 2.数据库连接池 -->
     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
          <!-- 连接数据库四要素 -->
          <property name="url" value="#{jdbc.url}"/>
          <property name="driverClassName" value="#{jdbc.driver}"/>
          <property name="username" value="#{jdbc.user}"/>
          <property name="password" value="#{jdbc.password}"/>
     </bean>
     <!-- 3.配置sqlSessionFactoryBean -->
     <bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
              <!--3.1引入ds数据源-->
          <property name="dataSource" ref="dataSource"/>
              <!--3.2映射路径:mapperLocations-->
          <property name="mapperLocations" value="classpath:com/lanou3g/entity/*.xml"/>
     </bean>

     <!-- 二.整合Spring:4.5.6
              spring整合其他2大框架:各种组件,同时运行,是一个多线程
     -->
     <!-- 4.加入myBatis注解:MapperScannerConfigurer -->
     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
              <!-- 4.1扫描dao包 -->
          <property name="basePackage" value="com.lanou3g.dao"/>
              <!-- 4.2注解类:包名.注解类名 -->
          <property name="annotationClass" value="com.lanou3g.annotation.MyBatisDao"/>
     </bean>
     <!-- 5.开启注解扫描 -->
     <context:component-scan base-package="com.lanou3g"/>

     <!-- 省略了开启mvc注解,用com.lanou3g.annotation.MyBatisDao.@interface自定义注解 -->

     <!-- 6.开启MVC注解驱动 -->
     <mvc:annotation-driven />

     <!-- 三.整合springMVC:7 -->
     <!-- 7.配置springMVC,处理请求转发,使用"国际资源视图解析器" -->
     <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
          <property name="prefix" value="/WEB-INF/"/>
          <property name="suffix" value=".jsp"/>
     </bean>

</beans>

jdbc.properties

url=jdbc:oracle:thin:@localhost:1521:orcl
driver=oracle.jdbc.OracleDriver
user=lanou3g
password=lanou3g

实体类
Account.java

package com.lanou3g.entity;

import java.sql.Date;
import java.sql.Timestamp;

public class Account {

    private Integer id;
    private Integer recommender_id;
    private String login_name;
    private String login_passwd;
    private String status;
    private Timestamp create_date;
    private Timestamp pause_date;
    private Timestamp close_date;
    private String real_name;
    private String idcard_no;
    private Date birthdate;
    private String gender;
    private String occupation;
    private String telephone;
    private String email;
    private String mailaddress;
    private String zipcode;
    private String qq;
    private Timestamp last_login_time;
    private String last_login_ip;

    //�Ƽ������֤��
    private String recommender_idcardno;



    @Override
    public String toString() {
        return "Account [id=" + id + ", recommender_id=" + recommender_id
                + ", login_name=" + login_name + ", login_passwd="
                + login_passwd + ", status=" + status + ", create_date="
                + create_date + ", pause_date=" + pause_date + ", close_date="
                + close_date + ", real_name=" + real_name + ", idcard_no="
                + idcard_no + ", birthdate=" + birthdate + ", gender=" + gender
                + ", occupation=" + occupation + ", telephone=" + telephone
                + ", email=" + email + ", mailaddress=" + mailaddress
                + ", zipcode=" + zipcode + ", qq=" + qq + ", last_login_time="
                + last_login_time + ", last_login_ip=" + last_login_ip
                + ", recommender_idcardno=" + recommender_idcardno + "]";
    }

    public String getRecommender_idcardno() {
        return recommender_idcardno;
    }

    public void setRecommender_idcardno(String recommenderIdcardno) {
        recommender_idcardno = recommenderIdcardno;
    }


    public Integer getId() {
        return id;
    }

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

    public Integer getRecommender_id() {
        return recommender_id;
    }

    public void setRecommender_id(Integer recommender_id) {
        this.recommender_id = recommender_id;
    }

    public String getLogin_name() {
        return login_name;
    }

    public void setLogin_name(String login_name) {
        this.login_name = login_name;
    }

    public String getLogin_passwd() {
        return login_passwd;
    }

    public void setLogin_passwd(String login_passwd) {
        this.login_passwd = login_passwd;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public Timestamp getCreate_date() {
        return create_date;
    }

    public void setCreate_date(Timestamp create_date) {
        this.create_date = create_date;
    }

    public Timestamp getPause_date() {
        return pause_date;
    }

    public void setPause_date(Timestamp pause_date) {
        this.pause_date = pause_date;
    }

    public Timestamp getClose_date() {
        return close_date;
    }

    public void setClose_date(Timestamp close_date) {
        this.close_date = close_date;
    }

    public String getReal_name() {
        return real_name;
    }

    public void setReal_name(String real_name) {
        this.real_name = real_name;
    }

    public String getIdcard_no() {
        return idcard_no;
    }

    public void setIdcard_no(String idcard_no) {
        this.idcard_no = idcard_no;
    }

    public Date getBirthdate() {
        return birthdate;
    }

    public void setBirthdate(Date birthdate) {
        this.birthdate = birthdate;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getOccupation() {
        return occupation;
    }

    public void setOccupation(String occupation) {
        this.occupation = occupation;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getMailaddress() {
        return mailaddress;
    }

    public void setMailaddress(String mailaddress) {
        this.mailaddress = mailaddress;
    }

    public String getZipcode() {
        return zipcode;
    }

    public void setZipcode(String zipcode) {
        this.zipcode = zipcode;
    }

    public String getQq() {
        return qq;
    }

    public void setQq(String qq) {
        this.qq = qq;
    }

    public Timestamp getLast_login_time() {
        return last_login_time;
    }

    public void setLast_login_time(Timestamp last_login_time) {
        this.last_login_time = last_login_time;
    }

    public String getLast_login_ip() {
        return last_login_ip;
    }

    public void setLast_login_ip(String last_login_ip) {
        this.last_login_ip = last_login_ip;
    }

}

分页
Page.java

package com.lanou3g.util;

public class Page {
     //每页数据量
     private int pageSize=4;

     //当前页码数
     private int  currentPage=1;

     private int begin;
     private int end;
     //数据总行数
     private int rows;
     //总页数
     private int totalPage;



     public Page() {
          super();
          // TODO Auto-generated constructor stub
     }

     public Page(int currentPage,int rows) {
          begin = (currentPage - 1) * pageSize +1;
          end =  currentPage * pageSize;
          totalPage = (rows - 1) / pageSize + 1;
          this.currentPage = currentPage;
          this.rows = rows;
     }

     public int getPageSize() {
          return pageSize;
     }

     public void setPageSize(int pageSize) {
          this.pageSize = pageSize;
     }

     public int getCurrentPage() {
          return currentPage;
     }

     public void setCurrentPage(int currentPage) {
          this.currentPage = currentPage;
     }

     public int getBegin() {
          return (currentPage - 1) * pageSize +1;
     }

     public void setBegin(int begin) {
          this.begin = begin;
     }

     public int getEnd() {
          return currentPage * pageSize;
     }

     public void setEnd(int end) {
          this.end = end;
     }

     public int getRows() {
          return rows;
     }

     public void setRows(int rows) {
          this.rows = rows;
     }

     public int getTotalPage() {
          return (rows - 1) / pageSize + 1;
     }

     public void setTotalPage(int totalPage) {
          this.totalPage = totalPage;
     }



}

实体类映射

AccountMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lanou3g.dao.AccountDao">
     <!-- //查询总个数(模糊查询条件)
     Integer getRows(AccountPage page); -->
     <select id="getRows" parameterType="com.lanou3g.entity.page.AccountPage" resultType="Integer">
          select count(1) from account
          <where>
              <if test="idcard_no != null and idcard_no.length()>0 ">
                   and idcard_no like '%'||#{idcard_no,jdbcType=NUMERIC}||'%'
              </if>
              <if test="real_name != null and real_name.length()>0">
                   and real_name like '%'||#{real_name,jdbcType=VARCHAR}||'%'
              </if>
              <if test="login_name != null and login_name.length()>0">
                   and login_name like '%'||#{login_name,jdbcType=VARCHAR}||'%'
              </if>
              <if test="status != null and status.length()>0">
                   and status = #{status}
              </if>
          </where>
     </select>



     <!-- //根据查询的总个数进行分页(模糊查询条件)
     List<Account> findByPage(AccountPage page); -->
     <select id="findByPage" parameterType="com.lanou3g.entity.page.AccountPage" resultType="com.lanou3g.entity.Account">
          select * from ( select a.*,rownum r from ( select * from account
          <where>
              <if test="idcard_no != null &amp;&amp; idcard_no.length()>0 ">
                   and idcard_no like '%'||#{idcard_no}||'%'
              </if>
              <if test="real_name != null &amp;&amp; real_name.length()>0">
                   and real_name like '%'||#{real_name}||'%'
              </if>
              <if test="login_name != null &amp;&amp; login_name.length()>0">
                   and login_name like '%'||#{login_name}||'%'
              </if>
              <if test="status != null &amp;&amp; !status.equals('-1') ">
                   and status = #{status}
              </if>
          </where>
          order by id ) a )
          where r between #{begin} and #{end}
     </select>

     <insert id="add" parameterType="com.lanou3g.entity.Account">
          insert into account
              (id,REAL_NAME,IDCARD_NO,LOGIN_NAME,
                   LOGIN_PASSWD,TELEPHONE,
              RECOMMENDER_ID,BIRTHDATE,
              EMAIL,OCCUPATION,GENDER,
              MAILADDRESS,ZIPCODE,QQ,STATUS)
              values
               (ACCOUNT_SEQ.nextval,#{real_name},#{idcard_no},#{login_name},
                   #{login_passwd},#{telephone},
               #{recommender_id,jdbcType=NUMERIC},#{birthdate},
               #{email,jdbcType=VARCHAR},#{occupation,jdbcType=VARCHAR},#{gender,jdbcType=VARCHAR},
               #{mailaddress,jdbcType=VARCHAR},#{zipcode,jdbcType=VARCHAR},#{qq,jdbcType=VARCHAR},1
              )
     </insert>

     <update id="updateStatus" parameterType="com.lanou3g.entity.Account">
          update account set status=#{status},
          <choose>
              <when test="status==0">
                   pause_date=null
              </when>
              <when test="status==1">
                   pause_date=SYSDATE
              </when>
              <otherwise>
                   close_date=SYSDATE
              </otherwise>
          </choose>
          where id=#{id}
     </update>

     <update id="delete" parameterType="com.lanou3g.entity.Account">
          update account set status=#{status},close_date=SYSDATE where id=#{id}
     </update>

     <select id="findById" resultType="com.lanou3g.entity.Account">
          select * from account where id=#{id}
     </select>

     <update id="update" parameterType="com.lanou3g.entity.Account">
          update account
          <set>
               real_name=#{real_name},telephone=#{telephone},
              occupation=#{occupation},gender=#{gender},
              <if test="recommender_id != null &amp;&amp; recommender_id.length()>0 ">
                   recommender_id=#{recommender_id},
              </if>
              <if test="email != null &amp;&amp; email.length()>0 ">
                   email=#{email},
              </if>
              <if test="mailaddress != null &amp;&amp; mailaddress.length()>0 ">
                   mailaddress = #{mailaddress},
              </if>
              <if test="zipcode != null &amp;&amp; zipcode.length()>0 ">
                   zipcode = #{zipcode},
              </if>
              <if test="qq != null &amp;&amp; qq.length()>0 ">
                   qq =#{qq},
              </if>
          </set>
          where id=#{id}
     </update>

</mapper>

自定义接口

MyBatisDao.java

package com.lanou3g.annotation;
/**
 *
 * @author lanou3g
 *
 * 开发SpringMVC支持的自定义注解:
 * 1.new接口
 * 2.在接口前+@
 *
 *
 */
public  @interface MyBatisDao {

}

dao层
AccountDao.java

package com.lanou3g.dao;

import java.util.List;

import com.lanou3g.annotation.MyBatisDao;
import com.lanou3g.entity.Account;
import com.lanou3g.entity.page.AccountPage;

@MyBatisDao
public interface AccountDao {

    //查询总个数(模糊查询条件)
    Integer getRows(AccountPage page);

    //根据查询的总个数进行分页(模糊查询条件)
    List<Account> findByPage(AccountPage page);

    //增加
    void add(Account account);

    //更改状态
    void updateStatus(Account account);

    //删除
    void delete(Account account);

    //修改
    void update(Account account);

    //根据id查对象
    Account findById(Integer id);
}

controller层
AccountController.java

package com.lanou3g.dao;

import java.util.List;

import com.lanou3g.annotation.MyBatisDao;
import com.lanou3g.entity.Account;
import com.lanou3g.entity.page.AccountPage;

@MyBatisDao
public interface AccountDao {

    //查询总个数(模糊查询条件)
    Integer getRows(AccountPage page);

    //根据查询的总个数进行分页(模糊查询条件)
    List<Account> findByPage(AccountPage page);

    //增加
    void add(Account account);

    //更改状态
    void updateStatus(Account account);

    //删除
    void delete(Account account);

    //修改
    void update(Account account);

    //根据id查对象
    Account findById(Integer id);
}

JSP页面
显示全部
account_list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>云科技</title>
        <link type="text/css" rel="stylesheet" media="all" href="${pageContext.request.contextPath }/styles/global.css" />
        <link type="text/css" rel="stylesheet" media="all" href="${pageContext.request.contextPath }/styles/global_color.css" /> 
        <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-3.2.1.min.js"></script>
        <script language="javascript" type="text/javascript">
            //删除
            function deleteAccount(id) {
                var r = window.confirm("确定要删除此账务账号吗?\r\n删除后将不能恢复,且会删除其下属的所有业务账号。");
                window.location.href="delete.do?id="+id;
            }
            //开通或暂停
            function setState(num,id) {
                if(num==0){
                    var r = window.confirm("确定要暂停此账务账号吗?");
                    window.location.href="pauseAccount.do?id="+id;
                }
                if(num==1){
                    var r = window.confirm("确定要开通此账务账号吗?");
                    window.location.href="startAccount.do?id="+id;
                }
            }
        </script>
    </head>
    <body>
        <!--Logo区域开始-->
        <div id="header">
            <img src="../images/logo.png" alt="logo" class="left"/>
            <a href="#">[退出]</a>            
        </div>
        <!--Logo区域结束-->
        <!--导航区域开始-->
        <div id="navi">                        
            <ul id="menu">
                <li><a href="../index.html" class="index_off"></a></li>
                <li><a href="../role/role_list.html" class="role_off"></a></li>
                <li><a href="../admin/admin_list.html" class="admin_off"></a></li>
                <li><a href="${pageContext.request.contextPath }/cost/findCost.do" class="fee_off"></a></li>
                <li><a href="${pageContext.request.contextPath }/account/findAccount.do" class="account_on"></a></li>
                <li><a href="../service/service_list.html" class="service_off"></a></li>
                <li><a href="../bill/bill_list.html" class="bill_off"></a></li>
                <li><a href="../report/report_list.html" class="report_off"></a></li>
                <li><a href="../user/user_info.html" class="information_off"></a></li>
                <li><a href="../user/user_modi_pwd.html" class="password_off"></a></li>
            </ul>            
        </div>
        <!--导航区域结束-->
        <!--主要区域开始-->
        <div id="main">
            <form action="${pageContext.request.contextPath }/account/findAccount.do" method="post">
                <!--查询-->
                <div class="search_add"> 
              <!-- 由于带条件的查询,直接点击分页跳转会导致查询条件丢失,所以
        将当前页码数存在表单中,页码直接提交表单document.forms[0].submit();即可
 -->
                <input type="hidden" name="currentPage" value="1" id="currentPage" />  

                    <div>身份证:<input type="text" value="${page.idcard_no}" class="text_search" name="idcard_no" /></div>                            
                    <div>姓名:<input type="text" value="${page.real_name}" class="width70 text_search"  name="real_name" /></div>
                    <div>登录名:<input type="text"  value="${page.login_name}" class="text_search" name="login_name" /></div>
                    <div>
                        状态:
                        <select class="select_search" name="status">
                            <option value="-1">全部</option>
                            <option value="0" <c:if test="${page.status == 0 }">selected</c:if> >开通 </option>
                            <option value="1" <c:if test="${page.status == 1 }">selected</c:if>>暂停</option>
                            <option value="2" <c:if test="${page.status == 2 }">selected</c:if>>删除</option>
                        </select>
                    </div>
                    <div><input type="submit" value="搜索" class="btn_search" /></div>
                    <input type="button" value="增加" class="btn_add" onclick="location.href='${pageContext.request.contextPath }/account/preAdd.do';" />
                </div>  
                <!--删除等的操作提示-->
                <div id="operate_result_info" class="operate_success">
                    <img src="../images/close.png" onclick="this.parentNode.style.display='none';" />
                    删除成功,且已删除其下属的业务账号!
                </div>   
                <!--数据区域:用表格展示数据-->     
                <div id="data">            
                    <table id="datalist">
                    <tr>
                        <th>账号ID</th>
                        <th>姓名</th>
                        <th class="width150">身份证</th>
                        <th>登录名</th>
                        <th>状态</th>
                        <th class="width100">创建日期</th>
                        <th class="width150">上次登录时间</th>                                                        
                        <th class="width200"></th>
                    </tr>
                     <c:forEach items="${accounts}" var="a">
                         <tr>
                            <td>${a.id }</td>
                            <td><a href="account_detail.html">${a.real_name }</a></td>
                            <td>${a.idcard_no }</td>
                            <td>${a.login_name }</td>
                            <c:choose>
                                <c:when test="${a.status == 0}">
                                    <td>开通</td>
                                </c:when>
                                <c:when test="${a.status == 1}">
                                    <td>暂停</td>
                                </c:when>
                                <c:otherwise>
                                    <td>删除</td>
                                </c:otherwise>
                            </c:choose>
                            <td><fmt:formatDate value="${a.create_date}" pattern="yyyy-MM-dd"/></td>
                            <td><fmt:formatDate value="${a.last_login_time}" pattern="yyyy-MM-dd HH:mm:ss"/></td>                            
                            <td class="td_modi">
                                <c:choose>
                                    <c:when test="${a.status == 0}">
                                        <input type="button" value="暂停" class="btn_pause" onclick="setState(${a.status},${a.id });" />
                                        <input type="button" value="修改" class="btn_modify" onclick="location.href='preUpdate.do?id=${a.id}';" />
                                        <input type="button" value="删除" class="btn_delete" onclick="deleteAccount(${a.id});" />
                                    </c:when>
                                    <c:when test="${a.status == 1}">
                                        <input type="button" value="开通" class="btn_start" onclick="setState(${a.status},${a.id });" />
                                        <input type="button" value="修改" class="btn_modify" onclick="location.href='preUpdate.do?id=${a.id}';" />
                                        <input type="button" value="删除" class="btn_delete" onclick="deleteAccount(${a.id});" />
                                    </c:when>
                                </c:choose>
                            </td>
                        </tr>
                    </c:forEach>
                </table>
                <p>业务说明:<br />
                1、创建则开通,记载创建时间;<br />
                2、暂停后,记载暂停时间;<br />
                3、重新开通后,删除暂停时间;<br />
                4、删除后,记载删除时间,标示为删除,不能再开通、修改、删除;<br />
                5、暂停账务账号,同时暂停下属的所有业务账号;<br />                
                6、暂停后重新开通账务账号,并不同时开启下属的所有业务账号,需要在业务账号管理中单独开启;<br />
                7、删除账务账号,同时删除下属的所有业务账号。</p>
                </div>                   
                <!--分页-->
                <div id="pages">
                    <a onclick="showPage(1)" >首页</a>

                    <a <c:if test="${page.currentPage > 1}"> onclick="showPage(${page.currentPage-1})" </c:if>  >上一页</a>

                    <c:forEach begin="1" end="${page.totalPage}" var="i" step="1">
                        <a onclick="showPage(${i})" class="page" >${i}</a>
                    </c:forEach>

                    <a <c:if test="${page.currentPage  != page.totalPage}"> onclick="showPage(${page.currentPage+1})" </c:if> >下一页</a>

                    <a onclick="showPage(${page.totalPage})">末页</a>
                </div>                    
            </form>
        </div>
        <!--主要区域结束-->
        <div id="footer">
            <p>[源自北美的技术,最优秀的师资,最真实的企业环境,最适用的实战项目]</p>
            <p>版权所有(C)云科技有限公司 </p>
        </div>
         <script type="text/javascript">
            $(function(){
                $(".page").eq(${page.currentPage-1}).addClass("current_page").siblings().removeClass("current_page");
            });
            function showPage(currentPage){
                $("#currentPage").val(currentPage);
                document.forms[0].submit();
            }
        </script> 
    </body>
</html>

添加页面
account_add.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <link type="text/css" rel="stylesheet" media="all" href="../styles/global.css" />
        <link type="text/css" rel="stylesheet" media="all" href="../styles/global_color.css" />
        <script language="javascript" type="text/javascript" src="../js/jquery-1.11.1.js"></script>
        <script language="javascript" type="text/javascript">
          //校验身份证
          function check_idcardno(idcardno) {
              //重置生日
              $("#birthdate").val("");

              //如果身份证为空,则给出提示
              if(idcardno == ""){
                   $("#idcardno_msg").text("身份证号不能为空!").addClass("error_msg");
                   return;
              }

              //如果身份证格式不对,则给出提示
              var reg = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;
              if(!reg.test(idcardno)){
                   $("#idcardno_msg").text("身份证号格式不正确!").addClass("error_msg");
                   return;
              }

              //校验通过,给予提示,并移除错误样式
              $("#idcardno_msg").text("有效的身份证号").removeClass("error_msg");

              //根据身份证提取出生日,赋值给生日字段
              var birthdate = idcardno.substring(6,10) + "-" + idcardno.substring(10,12) + "-" + idcardno.substring(12,14);
              $("#birthdate").val(birthdate);
          }
          //查询推荐人ID
          function search_recommender() {
                   //重置recommender_id
              $("#recommender_id").val("");

              //如果身份证为空,则返回
              var idcardno = $("#recommender_idcardno").val();
              if(idcardno == ""){
                   $("#recommender_msg").text("正确的身份证号码格式").removeClass("error_msg");
                   return;
              }

              //如果身份证格式不对,则给出提示
              var reg = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;
              if(!reg.test(idcardno)){
                   $("#recommender_msg").text("身份证号格式不正确!").addClass("error_msg");
                   return;
              }

              //以后用Ajax传值
          }

            //保存成功的提示信息
            function showResult() {
                showResultDiv(true);
                window.setTimeout("showResultDiv(false);", 3000);
            }
            function showResultDiv(flag) {
                var divResult = document.getElementById("save_result_info");
                if (flag)
                    divResult.style.display = "block";
                else
                    divResult.style.display = "none";
            }

            //显示选填的信息项
            function showOptionalInfo(imgObj) {
                var div = document.getElementById("optionalInfo");
                if (div.className == "hide") {
                    div.className = "show";
                    imgObj.src = "../images/hide.png";
                }
                else {
                    div.className = "hide";
                    imgObj.src = "../images/show.png";
                }
            }
        </script>
    </head>
    <body>
        <!--Logo区域开始-->
        <div id="header">
            <img src="../images/logo.png" alt="logo" class="left"/>
            <a href="#">[退出]</a>
        </div>
        <!--Logo区域结束-->
        <!--导航区域开始-->
        <div id="navi">
            <ul id="menu">
                <li><a href="../index.html" class="index_off"></a></li>
                <li><a href="../role/role_list.html" class="role_off"></a></li>
                <li><a href="../admin/admin_list.html" class="admin_off"></a></li>
                <li><a href="${pageContext.request.contextPath }/cost/findCost.do" class="fee_off"></a></li>
                <li><a href="${pageContext.request.contextPath }/account/findAccount.do" class="account_on"></a></li>
                <li><a href="../service/service_list.html" class="service_off"></a></li>
                <li><a href="../bill/bill_list.html" class="bill_off"></a></li>
                <li><a href="../report/report_list.html" class="report_off"></a></li>
                <li><a href="../user/user_info.html" class="information_off"></a></li>
                <li><a href="../user/user_modi_pwd.html" class="password_off"></a></li>
            </ul>

        </div>
        <!--导航区域结束-->
        <!--主要区域开始-->
        <div id="main">
            <!--保存成功或者失败的提示消息-->
            <div id="save_result_info" class="save_fail">保存失败,该身份证已经开通过账务账号!</div>
            <form action="${pageContext.request.contextPath }/account/add.do" method="post" class="main_form">
                <!--必填项-->
                <div class="text_info clearfix"><span>姓名:</span></div>
                <div class="input_info">
                    <input type="text" name="real_name" />
                    <span class="required">*</span>
                    <div class="validate_msg_long">20长度以内的汉字、字母和数字的组合</div>
                </div>
                <div class="text_info clearfix"><span>身份证:</span></div>
                <div class="input_info">
                    <input type="text" name="idcard_no" onblur="check_idcardno(this.value);"/>
                    <span class="required">*</span>
                    <div class="validate_msg_long" id="idcardno_msg">正确的身份证号码格式</div>
                </div>
                <div class="text_info clearfix"><span>登录账号:</span></div>
                <div class="input_info">
                    <input type="text" name="login_name" />
                    <span class="required">*</span>
                    <div class="validate_msg_long">30长度以内的字母、数字和下划线的组合</div>
                </div>
                <div class="text_info clearfix"><span>密码:</span></div>
                <div class="input_info">
                    <input type="password" name="login_passwd" />
                    <span class="required">*</span>
                    <div class="validate_msg_long">30长度以内的字母、数字和下划线的组合</div>
                </div>
                <div class="text_info clearfix"><span>重复密码:</span></div>
                <div class="input_info">
                    <input type="password"  />
                    <span class="required">*</span>
                    <div class="validate_msg_long">两次密码必须相同</div>
                </div>
                <div class="text_info clearfix"><span>电话:</span></div>
                <div class="input_info">
                    <input type="text" class="width200" name="telephone"/>
                    <span class="required">*</span>
                    <div class="validate_msg_medium">正确的电话号码格式:手机或固话</div>
                </div>
                <!--可选项-->
                <div class="text_info clearfix"><span>可选项:</span></div>
                <div class="input_info">
                    <img src="../images/show.png" alt="展开" onclick="showOptionalInfo(this);" />
                </div>
                <div id="optionalInfo" class="hide">
                    <div class="text_info clearfix"><span>推荐人身份证号码:</span></div>
                    <div class="input_info">
                        <input type="text" id="recommender_idcardno" onblur="search_recommender();"/>
                        <input type="hidden" name="recommender_id" id="recommender_id"/>
                        <div class="validate_msg_long" id="recommender_msg">正确的身份证号码格式</div>
                    </div>
                    <div class="text_info clearfix"><span>生日:</span></div>
                    <div class="input_info">
                        <input type="text" name="birthdate" readonly class="readonly" id="birthdate"/>
                    </div>
                    <div class="text_info clearfix"><span>Email:</span></div>
                    <div class="input_info">
                        <input type="text" class="width350" name="email"/>
                        <div class="validate_msg_tiny">50长度以内,合法的 Email 格式</div>
                    </div>

                    <div class="text_info clearfix"><span>职业:</span></div>
                    <div class="input_info">
                        <select name="occupation">
                             <option value="">全部</option>
                            <option value="1">干部</option>
                            <option value="2">学生</option>
                            <option value="3">技术人员</option>
                            <option value="4">其他</option>
                        </select>
                    </div>
                    <div class="text_info clearfix"><span>性别:</span></div>
                    <div class="input_info fee_type">
                        <input type="radio" name="gender" value="1" checked="checked" id="female" />
                        <label for="female"></label>
                        <input type="radio" name="gender" value="0" id="male" />
                        <label for="male"></label>
                    </div>

                    <div class="text_info clearfix"><span>通信地址:</span></div>
                    <div class="input_info">
                        <input type="text" class="width350" name="mailaddress"/>
                        <div class="validate_msg_tiny">50长度以内</div>
                    </div>

                    <div class="text_info clearfix"><span>邮编:</span></div>
                    <div class="input_info">
                        <input type="text" name="zipcode"/>
                        <div class="validate_msg_long">6位数字</div>
                    </div>

                    <div class="text_info clearfix"><span>QQ:</span></div>
                    <div class="input_info">
                        <input type="text" name="qq"/>
                        <div class="validate_msg_long">5到13位数字</div>
                    </div>
                </div>
                <!--操作按钮-->
                <div class="button_info clearfix">
                    <input type="submit" value="保存" class="btn_save" />
                    <input type="button" value="取消" class="btn_save" onclick="history.back();"/>
                </div>
            </form>
        </div>
        <!--主要区域结束-->
        <div id="footer">
            <span>[源自北美的技术,最优秀的师资,最真实的企业环境,最适用的实战项目]</span>
            <br />
            <span>版权所有(C)云科技有限公司 </span>
        </div>
    </body>
</html>

更新页面
account_update.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <link type="text/css" rel="stylesheet" media="all" href="../styles/global.css" />
        <link type="text/css" rel="stylesheet" media="all" href="../styles/global_color.css" />
        <script language="javascript" type="text/javascript" src="../js/jquery-1.11.1.js"></script>
        <script language="javascript" type="text/javascript">
          //查询推荐人ID
          function search_recommender() {
                   //重置recommender_id
              $("#recommender_id").val("");

              //如果身份证为空,则返回
              var idcardno = $("#recommender_idcardno").val();
              if(idcardno == ""){
                   $("#recommender_msg").text("正确的身份证号码格式").removeClass("error_msg");
                   return;
              }

              //如果身份证格式不对,则给出提示
              var reg = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;
              if(!reg.test(idcardno)){
                   $("#recommender_msg").text("身份证号格式不正确!").addClass("error_msg");
                   return;
              }
              //用Ajax传递地址和值

          }

            //保存成功的提示信息
            function showResult() {
                showResultDiv(true);
                window.setTimeout("showResultDiv(false);", 3000);
            }
            function showResultDiv(flag) {
                var divResult = document.getElementById("save_result_info");
                if (flag)
                    divResult.style.display = "block";
                else
                    divResult.style.display = "none";
            }

            //显示修改密码的信息项
            function showPwd(chkObj) {
                if (chkObj.checked)
                    document.getElementById("divPwds").style.display = "block";
                else
                    document.getElementById("divPwds").style.display = "none";
            }
        </script>
    </head>
    <body>
        <!--Logo区域开始-->
        <div id="header">
            <img src="../images/logo.png" alt="logo" class="left"/>
            <a href="#">[退出]</a>
        </div>
        <!--Logo区域结束-->
        <!--导航区域开始-->
        <div id="navi">

             <ul id="menu">
                <li><a href="../index.html" class="index_off"></a></li>
                <li><a href="../role/role_list.html" class="role_off"></a></li>
                <li><a href="../admin/admin_list.html" class="admin_off"></a></li>
                <li><a href="../fee/fee_list.html" class="fee_off"></a></li>
                <li><a href="../account/account_list.html" class="account_on"></a></li>
                <li><a href="../service/service_list.html" class="service_off"></a></li>
                <li><a href="../bill/bill_list.html" class="bill_off"></a></li>
                <li><a href="../report/report_list.html" class="report_off"></a></li>
                <li><a href="../user/user_info.html" class="information_off"></a></li>
                <li><a href="../user/user_modi_pwd.html" class="password_off"></a></li>
            </ul>

        </div>
        <!--导航区域结束-->
        <!--主要区域开始-->
        <div id="main">
            <!--保存成功或者失败的提示消息-->
            <div id="save_result_info" class="save_fail">保存失败,旧密码错误!</div>
            <form action="${pageContext.request.contextPath }/account/update.do" method="post" class="main_form">
                    <!--必填项-->
                    <div class="text_info clearfix"><span>账务账号ID:</span></div>
                    <div class="input_info">
                        <input type="text" name="id" value="${account.id}" readonly class="readonly" />
                    </div>
                    <div class="text_info clearfix"><span>姓名:</span></div>
                    <div class="input_info">
                        <input type="text" name="real_name" value="${account.real_name}" />
                        <span class="required">*</span>
                        <div class="validate_msg_long error_msg">20长度以内的汉字、字母和数字的组合</div>
                    </div>
                    <div class="text_info clearfix"><span>身份证:</span></div>
                    <div class="input_info">
                        <input type="text" name="idcard_no" value="${account.idcard_no}" readonly class="readonly" />
                    </div>
                    <div class="text_info clearfix"><span>登录账号:</span></div>
                    <div class="input_info">
                        <input type="text" name="login_name" value="${account.login_name}" readonly class="readonly"  />

                    </div>

                    <div class="text_info clearfix"><span>电话:</span></div>
                    <div class="input_info">
                        <input type="text" name="telephone" class="width200" value="${account.telephone }"/>
                        <span class="required">*</span>
                        <div class="validate_msg_medium error_msg">正确的电话号码格式:手机或固话</div>
                    </div>
                    <div class="text_info clearfix"><span>推荐人身份证号码:</span></div>
                    <div class="input_info">
                        <input type="text" id="recommender_idcardno" onblur="search_recommender();" value="${account.recommender_idcardno}"/>
                        <input type="hidden" name="recommender_id" id="recommender_id" value="${account.recommender_id}"/>
                        <div class="validate_msg_long error_msgs" id="recommender_msg">正确的身份证号码格式</div>
                    </div>
                    <div class="text_info clearfix"><span>生日:</span></div>
                    <div class="input_info">
                        <input type="text" name="birthdate" value="${account.birthdate}" readonly class="readonly" />
                    </div>
                    <div class="text_info clearfix"><span>Email:</span></div>
                    <div class="input_info">
                        <input type="text" name="email" class="width200" value="${account.email }"/>
                        <div class="validate_msg_medium">50长度以内,合法的 Email 格式</div>
                    </div>

                    <div class="text_info clearfix"><span>职业:</span></div>
                    <div class="input_info">
                        <select name="occupation">
                             <option value="">全部</option>
                            <option  value="1" ${account.occupation == '1' ? 'selected' : ''} >干部</option>
                            <option value="2" ${account.occupation=='2' ? 'selected' : ''} >学生</option>
                            <option value="3" ${account.occupation=='3'?'selected':''} >技术人员</option>
                            <option value="4" ${account.occupation=='4'?'selected':''} >其他</option>
                        </select>
                    </div>
                    <div class="text_info clearfix"><span>性别:</span></div>
                    <div class="input_info fee_type">
                        <input type="radio" name="gender" value="1" checked="<c:if test='${account.gender==1}'>checked</c:if>" id="female" onclick="feeTypeChange(1);" />
                        <label for="female"></label>
                        <input type="radio" name="gender" value="0" checked="<c:if test='${account.gender==0}'>checked</c:if>"  id="male" onclick="feeTypeChange(2);" />
                        <label for="male"></label>
                    </div>

                    <div class="text_info clearfix"><span>通信地址:</span></div>
                    <div class="input_info">
                        <input type="text" name="mailaddress" class="width350" value="${account.mailaddress }"/>
                        <div class="validate_msg_tiny">50长度以内</div>
                    </div>

                    <div class="text_info clearfix"><span>邮编:</span></div>
                    <div class="input_info">
                        <input type="text" name="zipcode" value="${account.zipcode }"/>
                        <div class="validate_msg_long">6位数字</div>
                    </div>

                    <div class="text_info clearfix"><span>QQ:</span></div>
                    <div class="input_info">
                        <input type="text" name="qq" value="${account.qq }"/>
                        <div class="validate_msg_long">5到13位数字</div>
                    </div>
                    <!--操作按钮-->
                    <div class="button_info clearfix">
                        <input type="submit" value="保存" class="btn_save" />
                        <input type="button" value="取消" class="btn_save" onclick="history.back();"/>
                    </div>
                </form>
        </div>
        <!--主要区域结束-->
        <div id="footer">
            <span>[源自北美的技术,最优秀的师资,最真实的企业环境,最适用的实战项目]</span>
            <br />
            <span>版权所有(C)云科技有限公司 </span>
        </div>
    </body>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值