會議管理系統--項目總結

- 前端

- 使用frameset框架搭建前段界面

<!--clos 左,中,右,左右為網頁兩側留白-->
<frameset cols="*,1010px,*" border="0px" class="fram_set" >
    <frame  src="cool.html" scrolling="no"/>
    <!--rows 上,中,下-->
    <frameset rows="100,*,150" border="0px">
        <frame name="top" src="top.html"  scrolling="no"/>
        <frameset cols="150,*" border="0px" > 
            <!--為網頁左側選擇菜單,網頁正文-->
            <frame name="left" src="left.html" scrolling="no" />
            <!--右侧目标没写-->
            <frame name="right" src="loginsuccess.html" scrolling="no"/>
        </frameset>
        <frame name="footer" src="footer.html" scrolling="no"/>
        </frameset>
    <frame  src="cool.html" scrolling="no"/>
</frameset>
<!--注意為各個標簽添加name屬性,否則不能正確顯示需要顯示的界面-->
 在對應的left選擇菜單中,想要在網頁right顯示,需要在A標簽中添加target='right'屬性,這樣網頁的顯示位置會被確定。

- Ajax的使用,以及傳值

  • 前端界面
var xmlHttp;
<!--創建ajax對象-->
function createXMLHttpRequest() {
    if (window.ActiveXObject) {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    else if (window.XMLHttpRequest) {
        xmlHttp = new XMLHttpRequest();                
    }
}
<!--因爲參數是輸出的,需要使用JS參數進行傳值,用來確定飾那一條數據-->
function fun(key,num){
<!--一些的JS效果,圖標的顯示隱藏-->
    var rea=key+"in_1";
    var reb=key+"sp_1";
    var rec=key+"fig_in1"
    var red=key+"fig_in2"
    var ree=key+"fig_in3"
    var inp=document.getElementById(rea);
    var sp=document.getElementById(reb);
    var ina=document.getElementById(rec);
    var inb=document.getElementById(red);
    var inc=document.getElementById(ree);
        if(num=="1"){
            inp.style.display="none";
            sp.style.display="block";
            ina.style.display="block";
            inb.style.display="none";
            inc.style.display="none";
            sp.innerHTML=inp.value;
        }else{
            inp.value=sp.innerHTML;
        }
        var info=key+"#"+inp.value+"#"+num;
        <!--到這裏才創建Ajax對象-->
        createXMLHttpRequest();
        <!--使用異步POST方式執行請求-->
        xmlHttp.open("POST","/FirstProject/Passdepa",true);
        <!--保存请求头-->
        xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        <!--保存参数-->
        xmlHttp.send("info="+encodeURI(info));
        <!--解析返回信息-->
        xmlHttp.onreadystatechange=callback;
        }
function callback(){
    <!--当返回完成并无异常-->
    if(xmlHttp.readyState==4&&xmlHttp.status==200){
    <!--以XML形式返回,解析xml-->
     var flog=xmlHttp.responseXML.getElementsByTagName("flog")[0].firstChild.data;
     <!--根据返回值,执行对应条件-->
     if(flog=="yes"){
        alert("修改完毕");
        location.href("/FirstProject/departmentdata");
     }else if(flog=="no"){
        alert("执行失败");
        location.href("/FirstProject/departmentdata");
         }  
    }
}
</script>
  • servlet中要将请求处理,并以XML方式返回结果
//message 为返回的信息,使用字符串拼接的方式将值传递回去
//以XML形式返回数据
response.setContentType("text/xml;charset=utf-8");
//PrintWriter 输出
PrintWriter out=response.getWriter();
response.setHeader("Cache-Control","no-cache");
out.println("<?xml version='1.0' encoding='"+"utf-8"+"' ?>");
out.println("<response>");
out.println("<passed>" + Boolean.toString(flag) + "</passed>");
out.println("<message>" + message + "</message>");
out.println("</response>");
out.close();
 这里不使用Ajax,真是直接使用onclick="location.href='xxxx?id=${EL}'"的URL形式访问更好,更加简单。

- 多选select选择框,以及左移右移

  • 关于select选择框多选
<!--直接在select标签中添加multiple字段 select即为多选 可以用CSS调节大小-->
<select name="select" id="select" multiple></select>
  • 使用JS来实现

  • 使用JQ来实现

<script type="text/javascript" src="js/jquery-3.1.1.min.js"></script>
<!--注意ID与JQ的对应关系,两个select标签,两个Input标签-->
<script type="text/javascript">
    $(document).ready(function(){  
        $('#add').click(function(){  
           var $options = $('#select1 option:selected');  
           var $remove = $options.remove();
           $remove.appendTo('#select2'); 
        });  

        $('#remove').click(function(){  
           var $removeOptions = $('#select2 option:selected');  
           $removeOptions.appendTo('#select1');
        });   

        $('#select1').dblclick(function(){   
           var $options = $('option:selected', this);
           $options.appendTo('#select2');  
        });  

        $('#select2').dblclick(function(){  
           $('#select2 option:selected').appendTo('#select1');  
        });
     });  
        </script>

- 后端

  • 对部门员工进行分页管理–基于Oracle数据库

1.Sql语句

a是当前页的第一条
b是当前页的最后一条
"select * from (select row_number() over (order by ename) as rn, f.* from emp f) b where b.rn 
between "+a+" and "+b;

2.对应dao层代码

//搜索员工
    public PageBean indexEmp(int pageNo,String name,String status){
        //pageCount 每页的条数
        int pageCount=3;
        //a 当前页的第一条
        int a=(pageNo-1)*pageCount+1;
        //b 当前页的最后一条
        int b=pageNo*pageCount;
        String countSql="select count(*) from employee where employee_name='"+name+"'and status='"+status+"'";
        String sql="select * from (select row_number() over (order by employee_id) as rn, "+" f.* from employee f
        where employee_name='"+name+"' and status='"+status+"'"+") b where b.rn between "+a+" and "+ b";
        ArrayList<Employee> emps = new ArrayList<Employee>();
        ResultSet rs=null;
        ResultSet countRs=null;
        try {
            rs=MyConn.query(sql1);
            while(rs.next()){
                String ename=rs.getString("employee_name");
                String eusername=rs.getString("username");
                String tel=rs.getString("phone");
                String email=rs.getString("email");         
                emps.add(new Employee(ename,eusername,tel,email));
            }
            countRs=MyConn.query(countSql);
            int totalCount=0;
            while(countRs.next()){
                totalCount=countRs.getInt(1);
            }
            System.out.println(totalCount);
            return new PageBean(emps,totalCount,pageNo,pageCount);
        } catch (SQLException e) {
            e.printStackTrace();
        }   
        return null;    
    }

3.对应的分页模型类PageBean

package com.chinasofti.vo;

import java.util.Collection;

public class PageBean {
    private Collection<Object> objs;//从数据库中读的集合
    private int totalCount;//总的条数
    private int pageNo;//当前的页数
    private int pageCount;//每页的条数
    private int totalPage;

    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }
    //无参构造方法
    public PageBean() {
        super();
        // TODO Auto-generated constructor stub
    }
    //全参构造方法
    public PageBean(Collection<Object> objs, int totalCount, int pageNo, int pageCount) {
        this.objs = objs;
        this.totalCount = totalCount;
        this.pageNo = pageNo;
        this.pageCount = pageCount;
    }
    //属性的set,get 方法
    public int getPageCount() {
        return pageCount;
    }

    public void setPageCount(int pageCount) {
        this.pageCount = pageCount;
    }

    public void setPageNo(int pageNo) {
        this.pageNo = pageNo;
    }

    public int getPageNo() {
        return pageNo;
    }

    public Collection<Object> getObjs() {
        return objs;
    }

    public void setObjs(Collection<Object> objs) {
        this.objs = objs;
    }

    public int getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }
    //获取总页数
    public int getTotalPage(){
        if(totalCount % pageCount == 0){
            return totalCount/pageCount;
        }else{
            return totalCount/pageCount+1;
        }
    }
    //多写一个判断下一页的方法
    public boolean isNext(){
        return pageNo < getTotalPage();
    }
    //上一页的方法
    public boolean isPrevious(){
        return pageNo > 1;
    }

}
从数据库中读取的数据(对应的条数) 存在集合中,在JSP页面输出

4.对应JSP

<head>
    <script type="text/javascript">
        function page(num){
            var myform = document.getElementById("myform");
            var pageNo = document.getElementById("pageNo"); 
            pageNo.value = num;
            myform.submit();
        }
    </script>
</head>
<body bgcolor="gainsboro">
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
        <div id="div_right">
            <div id="div_login">人员管理 > 搜索员工</div>
            <form action="/FirstProject/indexemp" method="post" id="form_login">
                <fieldset id="fie_set">
                    <legend style="font-weight: bold">登录信息</legend>
                    <table cellspacing="0px" cellpadding="8px" class="from_table">
                        <tr>
                            <td>
                                姓名:
                                <input type="text" name="name" id="name" />
                            </td>
                            <td>
                                账号名:
                                <input type="text" name="username" id="username" />
                            </td>
                            <td>
                                状态:
                                <input type="radio" name="che" value="1" checked/>已批准
                                <input type="radio" name="che" value="0" />待审批
                                <input type="radio" name="che" value="2" />已关闭
                            </td>
                        </tr>
                        <tr>
                            <td colspan="3" class="input_info">
                                <input class="click_button" type="submit" value="搜索" />
                                <input class="click_button" type="reset" value="重置" />
                            </td>
                        </tr>
                    </table>
                </fieldset>
            </form>
            <div class="div_info"><center>查询结果</center></div>
            <div class="div_info_all">
                <div class="div_info_all_text"><span class="span_txt">${requestScope.pagebean.totalCount}</span>
                    条结果,分成
                    <span class="span_txt">${requestScope.pagebean.totalPage}</span>页显示,当前第
                    <span class="span_txt">${requestScope.pagebean.pageNo}</span></div>
                <div class="div_input">
                    <form action="/FirstProject/indexemp" id="myform" method="post">
                    <input type="button" class="input_scan" value="首页" onclick="page(1);" />
                    <c:if test="${requestScope.pagebean.previous}">
                    <input type="button" class="input_scan" value="上页" onclick="page(${requestScope.pagebean.pageNo - 1})"/>
                    </c:if>
                    <c:if test="${requestScope.pagebean.next}">
                    <input type="button" class="input_scan" value="下页" onclick="page(${requestScope.pagebean.pageNo + 1})"/>
                    </c:if>
                    <input type="button" class="input_scan" value="末页" onclick="page(${requestScope.pagebean.totalPage})"/>
                    <span class="span_text">跳到第</span>
                    <input type="text" name="pageNo" id="pageNo" class="input_text"/>
                    <span class="span_text"></span>
                    <input type="submit" class="input_scan" value="跳转" />
                    </form>
                </div>
            </div>
            <table border="1px" cellspacing="0px" cellpadding="5px" class="table_txt">
                <tr class="table_head">
                    <th>姓名</th>
                    <th>账户名</th>
                    <th>联系电话</th>
                    <th>电子邮件</th>
                    <th>操作</th>
                </tr>
                <c:forEach items="${requestScope.pagebean.objs}" var="key">
                <tr>
                    <td>${key.employee_name}</td>
                    <td>${key.username}</td>
                    <td>${key.phone}</td>
                    <td>${key.email}</td>
                    <td>
                        <input type="button" class="fig_in" id="${key.username}" value="关闭帐号" onclick="fun('${key.username}','2')" />
                    </td>
                </tr>
                </c:forEach>
            </table>        
        </div>
    </body>

转载于:https://www.cnblogs.com/uzies/p/9649506.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值