我的课堂,登入,发布活动功能的实现

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/Draven__/article/details/81196029

目录
1. 登入功能的实现    3
1.1登入需要用到teacher表,所以先对teacher表进行反向工程    3
1.2数据库中有两个主键的表反向生成的时候会出现俩个实体类    3
2.编写TeacherDao    4
2.1根据TTeacherId和TPassword查询数据库中teacher    4
2.2TeacherDao的实现TeacherDaoImp并继承了HibernateDaoSupport    4
3. 编写WebAction的login函数    5
3.1定义一个TeacherDao并get,set    5
3.2增加一个属性表示登入状态,告诉jsp页面是否登入成功    5
3.3这里需要导入一个MD5Util工具包用于MD5加密TPassword以及一个属性psdMd5用来接收页面传过来的密码    7
3.4最后在struts.xml中进行配置,返回的是一个JSON对象    9
4. 编写login.jsp页面    10
4.1$(‘#loginBtn’).click 为loginBtn这个按钮设置点击监听事件    10
4.2增添自定义样式,设置标题字体的颜色和左边距    11
4.3先写一个表单测试提交功能    12
<form method="get" action="login.action" id="loginform">    12
<label class="label-zjc">用户名</label>    12
<input name="name" type="text"/>    12
<label class="label-zjc">密码</label>    12
<input name="psdMd5" type="password" />    12
<input type="button" id="loginBtn" value="登入">    12
</form>    12
4.4引用样式所需要的文件    12
4.5表单    13
5.修改newIndex.jsp页面    15
5.1当用户未登入时,跳转到登入界面    15
5.2增加id,loginname属性    16
<% String loginname = (String) session.getAttribute("loginname");  %>    16
<% Integer id= (Integer)session.getAttribute("id"); %>    16
5.3只有登入者为超级管理员admin才显示权限管理    17
6.发布活动功能的实现    17
6.1实现活动发布跳转    17
6.2在struts.xml中进行配置    18
6.3编写publishActivity.jsp中搜索参与导师的部分    18
6.4搜索下拉列表    18
6.5接下来编写inputChange函数    19
6.6初始化搜索到的数据进行显示    21
6.7判断图片大小和格式    24
6.8制作表单用于提交数据    25
6.9添加表单样式    34
7.新建活动 ,并跳转到显示页面    46
7.1在struts.xml中配置addActivity    46
7.2反向工程活动表    47
7.3编写 activityDao    47
7.4编写addActivity  action    52
7.5编写 allActivity action    57
7.6编写informationlist.jsp用于显示全部活动    61
运行程序    71


1. 登入功能的实现
1.1登入需要用到teacher表,所以先对teacher表进行反向工程
 
1.2数据库中有两个主键的表反向生成的时候会出现俩个实体类
 
 2.编写TeacherDao
2.1根据TTeacherId和TPassword查询数据库中teacher
public interface TeacherDao {
    public Teacher login(String name,String psd);
}
2.2TeacherDao的实现TeacherDaoImp并继承了HibernateDaoSupport
public class TeacherDaoImp extends HibernateDaoSupport implements TeacherDao {

    @SuppressWarnings("unchecked")
    @Override
    public Teacher login(String name, String psd) {
        String[] parm = {name, psd};
        List<Teacher> l = getHibernateTemplate()
                .find("from Teacher t where t.id.TTeacherId = ? and t.TPassword = ?",
                        parm);
        if (l.size() > 0) {
            return l.get(0);
        } else 
            return  null;
    }
}
3. 编写WebAction的login函数
3.1定义一个TeacherDao并get,set
TeacherDao teacherDao;
    public TeacherDao getTeacherDao() {
        return teacherDao;
    }    
    public void setTeacherDao(TeacherDao teacherDao) {
        this.teacherDao = teacherDao;
    }
并及时在applicationContext.xml中进行配置
 
3.2增加一个属性表示登入状态,告诉jsp页面是否登入成功
private int result;// 登陆状态
    
    public int getResult() {
        return result;
    }

    public void setResult(int result) {
        this.result = result;
    }
登入action
    @SuppressWarnings("unchecked")
    public String login() throws Exception {
        System.out.println("开始登陆");
        Teacher t = teacherDao.login(name, MD5Util.MD5(psdMd5));
        if (t == null) {
            // System.out.println("空");
            result = 1;
        } else {
            result = 0;
            // System.out.println("登陆" + name + ":" + psdMd5);
            Integer p = 1;
            session.put("user", t);
            session.put("power", t.getTPower());
            session.put("loginname", t.getTName());
            session.put("loginid", t.getId().getTTeacherId());
            session.put("id", t.getId().getTId());
            // System.out.println(session.get("id"));
            session.put("actpag", p);// 用于活动分页
            session.put("itempag", p);// 用于活动类别分页1
            // session.put("recordpag", p);// 学生成绩分页
            session.put("addresspag", p);// 地址分页2
            session.put("announcepag", p);// 公告分页3
        }
        s = JSONTools.createJsonObject("result", result);
        //这句将result放入到s对象中传到jsp页面
        return "success";
    }
3.3这里需要导入一个MD5Util工具包用于MD5加密TPassword以及一个属性psdMd5用来接收页面传过来的密码
private String psdMd5;    //接收的TPassword
    
    public String getPsdMd5() {
        return psdMd5;
    }

    public void setPsdMd5(String psdMd5) {
        this.psdMd5 = psdMd5;
    }
package web.util;

import java.security.MessageDigest;

public class MD5Util {
    // MD5加码。32位
    public static String MD5(String inStr) {
        MessageDigest md5 = null;
        try {
            md5 = MessageDigest.getInstance("MD5");
        } catch (Exception e) {
            System.out.println(e.toString());
            e.printStackTrace();
            return "";
        }
        char[] charArray = inStr.toCharArray();
        byte[] byteArray = new byte[charArray.length];

        for (int i = 0; i < charArray.length; i++)
            byteArray[i] = (byte) charArray[i];

        byte[] md5Bytes = md5.digest(byteArray);

        StringBuffer hexValue = new StringBuffer();

        for (int i = 0; i < md5Bytes.length; i++) {
            int val = ((int) md5Bytes[i]) & 0xff;
            if (val < 16)
                hexValue.append("0");
            hexValue.append(Integer.toHexString(val));
        }

        return hexValue.toString();
    }

    // 可逆的加密算法
    public static String KL(String inStr) {
        // String s = new String(inStr);
        char[] a = inStr.toCharArray();
        for (int i = 0; i < a.length; i++) {
            a[i] = (char) (a[i] ^ 't');
        }
        String s = new String(a);
        return s;
    }

    // 加密后解密
    public static String JM(String inStr) {
        char[] a = inStr.toCharArray();
        for (int i = 0; i < a.length; i++) {
            a[i] = (char) (a[i] ^ 't');
        }
        String k = new String(a);
        return k;
    }

    // 测试主函数
    public static void main(String args[]) {
        String s = new String("12345678");
        System.out.println("原始:" + s);
        System.out.println("MD5后:" + MD5(s));
        System.out.println("MD5后再加密:" + KL(MD5(s)));
        System.out.println("解密为MD5后的:" + JM(KL(MD5(s))));
    }
}
3.4最后在struts.xml中进行配置,返回的是一个JSON对象
<action name="login" method="login" class="webAction">
            <result type="json" name="success">
                <param name="root">s</param>
            </result>
        </action>
4. 编写login.jsp页面
4.1$(‘#loginBtn’).click 为loginBtn这个按钮设置点击监听事件
url: "login.action"      设置跳转的action 
dataType: "json"    设置传递回来的数据是json对象, 规定预期的服务器响应的数据类型。
data: $('#loginform').serialize()   把序列化的值传给ajax()作为url的参数,使用ajax()提交form表单
resData.result             Tomcat服务器返回的变量名为result,这是在WebAction类的login()函数中设置的result值
<script type="text/javascript">
            window.onload = function() {
                $('#loginBtn').click(function() {
                    $.ajax({
                        type : "get",
                        url : "login.action",
                        dataType : "json",
                        data : $('#loginform').serialize(),
                        success : function(resData) {
                            //alert("Tomcat服务器的返回值:" + resData)
                            //alert("Tomcat服务器的返回值resData.result:" + resData.result)
                            //alert("Tomcat服务器返回的变量名为result,这是在WebAction类的login()函数中设置的result值")
                            if (resData.result == 0) {
                                window.location.href = 'newIndex.jsp'
                            } else {
                                alert("用户名或密码错误");
                            }
                        },
                        error : function() {
                            alert("失败!");
                        }
                    });
                });
            };
4.2增添自定义样式,设置标题字体的颜色和左边距
<style>    
    .label-zjc {
        color: #B2DFEE;
        padding-left: 14px;
    }
    .h2-zjc {
        color:#00FFFF;
        font-size:35px;
    }
</style>
4.3先写一个表单测试提交功能
<form method="get" action="login.action" id="loginform">
            <label class="label-zjc">用户名</label>
            <input name="name" type="text"/>
            <label class="label-zjc">密码</label>
            <input name="psdMd5" type="password" />
            <input type="button" id="loginBtn" value="登入">
        </form>
 
4.4引用样式所需要的文件
<script src="jules/js/jquery.min.js"></script>    jquery的基本包,使用bootstrap必须要使用
<link rel="stylesheet" href="css/bootstrap.min.css" />
<link rel="stylesheet" href="css/bootstrap-responsive.min.css" />
<link rel="stylesheet" href="css/matrix-login.css" />
<link href="font-awesome/css/font-awesome.css" rel="stylesheet" />
loginbox    登入表格样式    css/matrix-login.css
class="control-group normal_text"    设置表格标题样式    css/bootstrap.min.css
form-vertical    
堆叠式的,所有控件的标签文字都左对齐
    css/matrix-login.css
control-label    Bootstrap默认情况下,control-label的文本采用右对齐方式。    css/bootstrap.min.css
controls    与control-group,control-label一起使用    css/bootstrap.min.css
main_input_box    设置输入框样式    css/matrix-login.css
add-on bg_lg    设置输入框样式    css/matrix-login.css
icon-user,
icon-lock    UI图标    font-awesome/css/font-awesome.css
pull-right    整体右浮动    css/bootstrap.min.css
btn btn-succes class="btn"    用于在模态窗口的尾部创建一个大号的按钮。    css/bootstrap.min.css
4.5表单
<div id="loginbox">
        <div class="normal_text">
            <h2 class="h2-zjc">“尚德书院”信息中心</h2>
        </div>
        <form method="get" id="loginform" class="form-vertical"
            action="login.action">
            <div class="control-group">
                <label class="label-zjc">用户名</label>
                <div class="controls">
                    <div class="main_input_box">
                        <span class="add-on bg_lg">
                            <i class="icon-user" style="font-size:16px;"></i>
                        </span>
                        <input name="name" type="text" />
                    </div>
                </div>
            </div>
            <div class="control-group">
                <label class="label-zjc">登陆密码</label>
                <div class="controls">
                    <div class="main_input_box">
                        <span class="add-on bg_ly">
                            <i class="icon-lock" style="font-size:16px;"></i>
                        </span>
                        <input name="psdMd5" type="password" />
                    </div>
                </div>
            </div>
            <div class="control-group">
                <div>&nbsp;</div>
            </div>
            <div class="form-actions">
                <span class="pull-right"> 
                    <input type="button" id="loginBtn"
                        class="btn btn-success" style="width:440px;"
                        value="登&nbsp;&nbsp;&nbsp;&nbsp;录" />
                </span>
            </div>
        </form>
4.6效果截图
 
5.修改newIndex.jsp页面
5.1当用户未登入时,跳转到登入界面
parent.location.href是上一层页面跳转
<% String user = (String) session.getAttribute("loginname");
    if(user==null )
   {
        %>
         <script>
          parent.location.href="login.jsp"
        </script>
<%
   }
  %>
5.2增加id,loginname属性
<% String loginname = (String) session.getAttribute("loginname");  %>
<% Integer id= (Integer)session.getAttribute("id"); %>
当显示左侧菜单栏的时候,根据登入用户的id权限进行查询
 
下拉框显示欢迎你,loginname
 
 
5.3只有登入者为超级管理员admin才显示权限管理
 
6.发布活动功能的实现
6.1实现活动发布跳转
    public String publishActivity() {
        teacherlist = teacherDao.allTeacher();
        // System.out.println(teacherlist.get(0).getTName());
        addresslist = addressDao.allAddress();
        return "success";
    }
此时需要为teacherDao增加allTeacher方法
@Override
    public List<Teacher> allTeacher() {
        List<Teacher> l = getHibernateTemplate().find("from Teacher where TPower=1");
        return l;
    }
以及teacherlist用于jsp页面使用
    private List<Teacher> teacherlist = new ArrayList<Teacher>();
    
    public List<Teacher> getTeacherlist() {
        return teacherlist;
    }

    public void setTeacherlist(List<Teacher> teacherlist) {
        this.teacherlist = teacherlist;
    }
6.2在struts.xml中进行配置
<action name="publishActivity" class="webAction" method="publishActivity">
            <result name="success">/publishActivity.jsp</result>
        </action>
6.3编写publishActivity.jsp中搜索参与导师的部分
定义一个数组arraytea,遍历从webAction传过来的teacherlist,每次遍历,往数组的末尾插入一个结构体,name : '${res.TName}' + '>>' + '${res.id.TTeacherId}'
code : '${res.id.TTeacherId}'
var arraytea = new Array();    
        <c:forEach var="res" items="${teacherlist}">
        arraytea.push({
            name : '${res.TName}' + '>>' + '${res.id.TTeacherId}',
            code : '${res.id.TTeacherId}'
        });
        </c:forEach>
6.4搜索下拉列表
bind() 方法为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数。
1)propertychange只要当前对象的属性发生改变就会触发该事件
2)input是标准的浏览器事件,一般应用于input元素,当input的value发生变化就会发生,无论是键盘输入还是鼠标黏贴的改变都能及时监听到变化

    $('#testInput').bind('input propertychange', function() {
            var items = inputChange();//搜索数据并获取搜索结果  
            if (items != undefined) {
                _initItems(items);
            }

        });
 
6.5接下来编写inputChange函数
var inputValue = $('#testInput').val(); 中获取的是输入框中输入的值,
根据inputValue创建一个正则表达式, matcher,不区分大小写匹配
grep()方法用于数组元素过滤筛选
grep(array,callback,invert)
array:待过滤数组;
callback:处理数组中的每个元素,并过滤元素,该函数中包含两个参数,第一个是当前数组元素的值,一个是当前数组元素的下标,即元素索引值。此函数应返回一个布尔值。另外,此函数可设置为一个字符串,当设置为字符串时,将视为“lambda-form”(缩写形式?),其中 a 代表数组元素,i 代表元素索引值。如“a > 0”代表“function(a){ return a > 0; }”
invert:布尔型可选项,默认值false,值为true或false, 如果 “invert” 为 false 或为设置,则函数返回数组中由过滤函数返回 true 的元素,当”invert” 为 true,则返回过滤函数中返回 false 的元素集。
var arr=$.grep([0,1,2,3,4,5,6],function(n,i){
return n>2
});
上面的例子返回[3,4,5,6],但是我们给invert的值为true,例如
var arr=$.grep([0,1,2,3,4,5,6],function(n,i){
return n>2
},ture);
所以现在返回的是[0,1,2],也就是被callback函数过滤掉的元素。
所以$.grep(arraytea, function(value)过滤数组,返回value.name中和正则表达式匹配的数组
//1:搜索数据  
        var inputChange = function() {
            var inputValue = $('#testInput').val();
            if (inputValue != "" && inputValue.indexOf("000") == -1) {
                var matcher = new RegExp(inputValue, "i");
                return $.grep(arraytea, function(value) {
                    return matcher.test(value.name);
                });
            } else if (inputValue != "" && inputValue.indexOf("000") != -1) {
                var matcher = new RegExp(inputValue, "i");
                return $.grep(arraytea, function(value) {
                    return matcher.test(value.code);
                });
            }
        };

6.6初始化搜索到的数据进行显示  
 
var maxFontNumber = 0;//最大字数  
var suggestContainer = $('<div></div>'); //创建一个子<div>  
suggestContainer.attr('id', "testInput-suggest");    给这个div字段添加一个id
suggestContainer.attr('tabindex', '0');    //设置他tab的优先级
suggestContainer.hide();    //当用户未输入时先影藏该元素

var _initItems = function(items) {
            $('#ruleOrgCode').val("");    //赋值为空字符串
            suggestContainer.empty();
            for (var i = 0; i < items.length; i++) {
                if (items[i].name.length > maxFontNumber) {
                    maxFontNumber = items[i].name.length;
                }    //计算出宽度,为子元素的最大宽度
                var suggestItem = $('<div></div>'); //创建一个子<div>  
                suggestItem.attr('code', items[i].code);
                suggestItem.append(items[i].name);//子div中放入
查找出的arraytea的name
                suggestItem.css({
                    'padding' : '3px',//item间距  
                    'white-space' : 'nowrap',
                    'cursor' : 'pointer',
                    'background-color' : 'RGB(199,237,204)',//默认背景颜色  
                    'color' : '#000000'//默认字体颜色  
                });
                suggestItem.bind("mouseover", function() {//鼠标滑过的事件
                    $(this).css({
                        'background-color' : '#C9302C',//选中背景颜色  
                        'color' : '#ffffff'//选中字体颜色  
                    });
                });
                //当鼠标从元素上移开时,改变元素的背景色
                suggestItem.bind("mouseout", function() {
                    $(this).css({
                        'background-color' : 'RGB(199,237,204)',//默认背景颜色  
                        'color' : '#000000'//默认字体颜色  
                    });
                });
                suggestItem.bind("click", showClickTextFunction);//选中后处理数据  
                //将这个item div放入到Container div下 
                suggestItem.appendTo(suggestContainer);
                //将这个下拉框放入到body下,作为子标签,方便接下来控制他的位置,如果放到其他标签下,可能会受到其他标签样式的影响
                suggestContainer.appendTo(document.body);
            }
            suggestContainer.removeAttr("style");//移除他的style属性
            suggestContainer.css({    //设置他的样式
                'border' : '1px solid #ccc',
                'max-height' : '200px',
                'top' : $('#testInput').offset().top
                        + $('#testInput').outerHeight(),
                'left' : $('#testInput').offset().left,
                'width' : 12 * maxFontNumber + 2 * 3 + 30,
                'position' : 'absolute',
                'font-size' : '12px',//默认字体大小  
                'font-family' : 'Arial',
                'z-index' : 99999,
                'background-color' : '#FFFFFF',
                'overflow-y' : 'auto',
                'overflow-x' : 'hidden',
                'white-space' : 'nowrap'
            });
            maxFontNumber = 0;    //将最大宽度归零
            suggestContainer.show();//显示下拉框
        };
当点击了某个suggestItem , 则开始执行绑定的事件bind("click", showClickTextFunction); 在testInput输入框中显示this.innerText,即items[i].name
$('#ruleOrgCode').val(this.getAttribute("code"));     //在ruleOrgCode这个隐藏域中放入选中items中的code,为了提交表单的时候将选中的teacher传回action
suggestContainer.hide();    //选中后将下拉框影藏
var showClickTextFunction = function() {
            //alert(this.innerText + "---" + this.getAttribute("code"));  
            $('#testInput').val(this.innerText);
            $('#ruleOrgCode').val(this.getAttribute("code"));
            suggestContainer.hide();
        };
6.7判断图片大小和格式
<tr>
                    <th>活动主图片</th>
                    <td><input required="required"
                        type="file" name="file1" accept="image/*"
                        onchange="getPhotoSize(this)" size=40 "/></td>
                </tr>

<script type="text/javascript">
    // 判断图片大小和格式
    function getPhotoSize(obj) {
        photoExt = obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();//获取图片格式并转为小写
        if (photoExt != '.jpg' && photoExt != '.png' && photoExt != '.jpeg') {
            alert("文件格式错误!");
            var nf = obj.cloneNode(true);// 递归复制当前节点的所有子孙节点
            nf.value = '';
            obj.parentNode.replaceChild(nf, obj);
//这三步的作用是清除上传input的value值
            return false;
        }
        var fileSize = 0;
        var isIE = /msie/i.test(navigator.userAgent) && !window.opera;
//判断游览器类型
        if (isIE && !obj.files) {
            var filePath = obj.value;
            var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
            var file = fileSystem.GetFile(filePath);
            fileSize = file.Size;
        } else {
            fileSize = obj.files[0].size;
        }
        fileSize = Math.round(fileSize / 1024 * 100) / 100;
        if (fileSize > 2048) {
            alert("不接受超过2m的图片!");
            return false;
        }
    }
</script>
6.8制作表单用于提交数据
只有使用了enctype="multipart/form-data",才能完整的传递文件数据,进行文件上传操作
placeholder    属性提供可描述输入字段预期值的提示信息
laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss',min: laydate.now(0)})
istime: 是否开启时间选择    
format 时间格式
min: 最小时间

<form action="addActivity" name="cform" method="post"
        enctype="multipart/form-data" id="activityFrom">
        <table id="activityTable">
            <tbody>
                <tr>
                    <th>活动形式</th>
                    <td><select  name="item" id="acitem"
                        required="required">
                            <%
                                String user = (String) session.getAttribute("loginname");
                                if ("博雅读书".equals(user)) {
                            %>
                            <option value="1">书评报告会</option>
                            <option value="2">读书沙龙</option>
                            <option value="3">书评撰写</option>
                            <input name="type" type="hidden" value=2>
                            <%
                                } else if ("博雅心情".equals(user)) {
                            %>

                            <option value="4">理论教学</option>
                            <option value="5">随堂训练</option>
                            <option value="6">实践锻炼</option>
                            <input name="type" type="hidden" value=3>
                            <%
                                } else if ("博雅实践".equals(user)) {
                            %>

                            <option value="7">社会实践</option>
                            <option value="8">志愿服务</option>
                            <input name="type" type="hidden" value=4>
                            <%
                                } else if ("博雅讲坛".equals(user)) {
                            %>

                            <option value="9">浙江人文大讲堂之江分讲堂</option>
                            <option value="10">之江大讲堂</option>
                            <option value="11">师友讲堂</option>
                            <option value="12">院长下午茶,书记有约</option>
                            <option value="13">主题沙龙</option>
                            <option value="21">新青年月谈</option>
                            <option value="22">梦湖讲堂</option>
                            <option value="23">青春有约</option>
                            <input name="type" type="hidden" value=5>
                            <%
                                } else if ("博雅修身".equals(user)) {
                            %>

                            <option value="14">兴趣社团</option>
                            <option value="15">阳光长跑</option>
                            <option value="16">文明寝室建设</option>
                            <option value="17">体育文化活动</option>
                            <input name="type" type="hidden" value=6>
                            <%
                                } else if ("博雅视野".equals(user)) {
                            %>
                            <option value="18">出国深造</option>
                            <option value="19">交换学习</option>
                            <option value="20">游学访学</option>
                            <input name="type" type="hidden" value=7>
                            <%
                                }
                            %>
                    </select></td>
                    <th>活动名称</th>
                    <td><input  type="text" name="name"
                        required="required"></td>
                </tr>

                <tr>
                    <th>起始时间</th>
                    <td><input required="required"
                        name="startTime1"
                        placeholder="开始时间"
                        onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss',min: laydate.now(0)})">
                    </td>
                    <th>结束时间</th>
                    <td><input required="required"
                        name="endTime1"
                        placeholder="结束时间"
                        onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss',min: laydate.now(0)})">
                    </td>
                </tr>

                <tr>
                    <th>起始时间2</th>
                    <td><input required="required"
                        name="startTime2"
                        placeholder="开始时间"
                        onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss',min: laydate.now(0)})">
                    </td>
                    <th>结束时间2</th>
                    <td><input required="required"
                        name="endTime2"
                        placeholder="结束时间"
                        onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss',min: laydate.now(0)})">
                    </td>
                </tr>

                <tr>
                    <th>可获得学分</th>
                    <td><input required="required"
                        type="text" name="credit"></td>
                    <th>活动人数</th>
                    <td><input required="required"
                        type="text" name="peopleNum"></td>
                </tr>

                <tr>
                    <th>参与导师</th>
                    <td><input type="text" id="testInput" />
                        <input type="hidden" name="fkTeacherId" id="ruleOrgCode"
                        required="required" /></td>
                    <th>举办学院</th>
                    <td><select  name="college" id="college"
                        required="required">
                            <option value="1">全部学院</option>
                            <option value="2">之江学院</option>
                            <option value="3">信息学院</option>
                            <option value="4">人文学院</option>
                            <option value="5">商学院</option>
                            <option value="6">设计学院</option>
                            <option value="7">外国语学院</option>
                            <option value="8">机械学院</option>
                            <option value="9">中旅学院</option>
                            <option value="10">建筑学院</option>
                            <option value="11">理学院</option>
                            <option value="12">创新创业学院</option>
                    </select></td>
                </tr>

                <tr>
                    <th>活动地址</th>
                    <td><select name="addressId"
                        required="required">
                            <c:forEach items="${addresslist}" var="res">
                                <option value="${res.id}">${res.name}</option>
                            </c:forEach>
                    </select></td>
                    <th>指派学院</th>
                    <td><select  name="zdcollege"
                        id="college" required="required">
                            <option value="1">全部学院</option>
                            <option value="2">商学院</option>
                            <option value="3">信息工程学院</option>
                            <option value="4">人文学院</option>
                            <option value="5">机械工程学院</option>
                            <option value="6">外国语学院</option>
                            <option value="7">建筑学院</option>
                            <option value="8">设计学院</option>
                            <option value="9">理学院</option>
                            <option value="10">中旅学院</option>
                    </select></td>
                </tr>
                <tr>
                    <th>活动主图片</th>
                    <td><input required="required"
                        type="file" name="file1" accept="image/*"
                        onchange="getPhotoSize(this)" size=40 "/></td>
                </tr>
                <tr>
                    <th>活动详情</th>
                    <td colspan="3"><textarea required="required"
                             rows="3" type="text" id="desc" name="desc"></textarea>
                    </td>
                </tr>
            </tbody>
        </table>

        <div>
            <input 
                type="submit" value="取消 " /> <input
                id="submit" 
                type="submit" value="确定 " />
        </div>
    </form>
 
6.9添加表单样式
wrapper wrapper-content  animated fadeInRight article    页面框起来,好限定宽度及其他设置    jules/css/style.min862f.css
row    栅格系统    jules/css/bootstrap.min14ed.css
col-lg-10 col-lg-offset-1    Bootstrap栅格系统布局    jules/css/bootstrap.min14ed.css
ibox         jules/css/bootstrap.min14ed.css
table table-bordered    边框显示    <link href="jules/css/bootstrap.min14ed.css?v=3.3.6" rel="stylesheet">
form-group
form-control    form-control :换行+填充整行 
form-group : 增加块元素的下部留白或下部边界,从而使块元素的间距变大    jules/css/bootstrap.min14ed.css
laydate-icon form-control layer-date    时间插件    jules/js/layer/laydate/laydate.js
btn btn-sm btn-primary m-t-n-xs pull-right    按钮样式,按钮靠右放置且颜色为绿色    jules/css/bootstrap.min14ed.css
<link href="jules/css/bootstrap.min14ed.css?v=3.3.6" rel="stylesheet"> 1
<link href="jules/css/style.min862f.css?v=4.1.0" rel="stylesheet"> 2
<script src="jules/js/layer/laydate/laydate.js "></script>
<script src="jules/js/jquery.min.js?v=2.1.4 "></script>
<script type="text/javascript" src="js/jquery-1.7.2.js"></script>
注意导入的顺序为1,2, 表格样式定义有重复的,以min862f.css中的为准
<body class="gray-bg">
    <div class="wrapper wrapper-content  animated fadeInRight article">
        <div class="row">
            <div class="col-lg-10 col-lg-offset-1">
                <div class="ibox">
                    <div class="ibox-content">
                        <div class="ibox float-e-margins">
                            <div class="text-center">
                                <h3>发布活动详情</h3>
                            </div>
                            <div class="ibox-content">
                                <form action="addActivity" name="cform" method="post"
                                    enctype="multipart/form-data" id="activityFrom">
                                    <table class="table table-bordered" style="height: auto;"
                                        id="activityTable">
                                        <tbody>
                                            <tr>
                                                <th>活动形式</th>
                                                <td><select class="form-control " name="item"
                                                    id="acitem" required="required">
                                                        <%
                                                            String user = (String) session.getAttribute("loginname");
                                                            if ("博雅读书".equals(user)) {
                                                        %>
                                                        <option value="1">书评报告会</option>
                                                        <option value="2">读书沙龙</option>
                                                        <option value="3">书评撰写</option>
                                                        <input name="type" type="hidden" value=2>
                                                        <%
                                                            } else if ("博雅心情".equals(user)) {
                                                        %>

                                                        <option value="4">理论教学</option>
                                                        <option value="5">随堂训练</option>
                                                        <option value="6">实践锻炼</option>
                                                        <input name="type" type="hidden" value=3>
                                                        <%
                                                            } else if ("博雅实践".equals(user)) {
                                                        %>

                                                        <option value="7">社会实践</option>
                                                        <option value="8">志愿服务</option>
                                                        <input name="type" type="hidden" value=4>
                                                        <%
                                                            } else if ("博雅讲坛".equals(user)) {
                                                        %>

                                                        <option value="9">浙江人文大讲堂之江分讲堂</option>
                                                        <option value="10">之江大讲堂</option>
                                                        <option value="11">师友讲堂</option>
                                                        <option value="12">院长下午茶,书记有约</option>
                                                        <option value="13">主题沙龙</option>
                                                        <option value="21">新青年月谈</option>
                                                        <option value="22">梦湖讲堂</option>
                                                        <option value="23">青春有约</option>
                                                        <input name="type" type="hidden" value=5>
                                                        <%
                                                            } else if ("博雅修身".equals(user)) {
                                                        %>

                                                        <option value="14">兴趣社团</option>
                                                        <option value="15">阳光长跑</option>
                                                        <option value="16">文明寝室建设</option>
                                                        <option value="17">体育文化活动</option>
                                                        <input name="type" type="hidden" value=6>
                                                        <%
                                                            } else if ("博雅视野".equals(user)) {
                                                        %>
                                                        <option value="18">出国深造</option>
                                                        <option value="19">交换学习</option>
                                                        <option value="20">游学访学</option>
                                                        <input name="type" type="hidden" value=7>
                                                        <%
                                                            }
                                                        %>
                                                </select></td>
                                                <th>活动名称</th>
                                                <td><input class="form-control" type="text" name="name"
                                                    required="required"></td>
                                            </tr>

                                            <tr>
                                                <th>起始时间</th>
                                                <td><input required="required"
                                                    class="laydate-icon form-control layer-date"
                                                    name="startTime1" placeholder="开始时间"
                                                    onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss',min: laydate.now(0)})">
                                                </td>
                                                <th>结束时间</th>
                                                <td><input required="required"
                                                    class="laydate-icon form-control layer-date"
                                                    name="endTime1" placeholder="结束时间"
                                                    onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss',min: laydate.now(0)})">
                                                </td>
                                            </tr>

                                            <tr>
                                                <th>起始时间2</th>
                                                <td><input required="required"
                                                    class="laydate-icon form-control layer-date"
                                                    name="startTime2" placeholder="开始时间"
                                                    onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss',min: laydate.now(0)})">
                                                </td>
                                                <th>结束时间2</th>
                                                <td><input required="required"
                                                    class="laydate-icon form-control layer-date"
                                                    name="endTime2" placeholder="结束时间"
                                                    onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss',min: laydate.now(0)})">
                                                </td>
                                            </tr>

                                            <tr>
                                                <th>可获得学分</th>
                                                <td><input required="required" class="form-control "
                                                    type="text" name="credit"></td>
                                                <th>活动人数</th>
                                                <td><input required="required" class="form-control "
                                                    type="text" name="peopleNum"></td>
                                            </tr>

                                            <tr>
                                                <th>参与导师</th>
                                                <td><input type="text" class="form-control "
                                                    id="testInput" /> <input type="hidden" name="fkTeacherId"
                                                    id="ruleOrgCode" required="required" /></td>
                                                <th>举办学院</th>
                                                <td><select class="form-control " name="college"
                                                    id="college" required="required">
                                                        <option value="1">全部学院</option>
                                                        <option value="2">之江学院</option>
                                                        <option value="3">信息学院</option>
                                                        <option value="4">人文学院</option>
                                                        <option value="5">商学院</option>
                                                        <option value="6">设计学院</option>
                                                        <option value="7">外国语学院</option>
                                                        <option value="8">机械学院</option>
                                                        <option value="9">中旅学院</option>
                                                        <option value="10">建筑学院</option>
                                                        <option value="11">理学院</option>
                                                        <option value="12">创新创业学院</option>
                                                </select></td>
                                            </tr>

                                            <tr>
                                                <th>活动地址</th>
                                                <td><select class="form-control " name="addressId"
                                                    required="required">
                                                        <c:forEach items="${addresslist}" var="res">
                                                            <option value="${res.id}">${res.name}</option>
                                                        </c:forEach>
                                                </select></td>
                                                <th>指派学院</th>
                                                <td><select class="form-control " name="zdcollege"
                                                    id="college" required="required">
                                                        <option value="1">全部学院</option>
                                                        <option value="2">商学院</option>
                                                        <option value="3">信息工程学院</option>
                                                        <option value="4">人文学院</option>
                                                        <option value="5">机械工程学院</option>
                                                        <option value="6">外国语学院</option>
                                                        <option value="7">建筑学院</option>
                                                        <option value="8">设计学院</option>
                                                        <option value="9">理学院</option>
                                                        <option value="10">中旅学院</option>
                                                </select></td>
                                            </tr>
                                            <tr>
                                                <th>活动主图片</th>
                                                <td><input required="required" type="file" name="file1"
                                                    accept="image/*" onchange="getPhotoSize(this)" size=40 "/></td>
                                            </tr>
                                            <tr>
                                                <th>活动详情</th>
                                                <td colspan="3"><textarea required="required"
                                                        class="form-control " rows="3" type="text" id="desc"
                                                        name="desc"></textarea></td>
                                            </tr>
                                        </tbody>
                                    </table>

                                    <div class="form-group" style="height: auto">
                                        <input class="btn btn-sm btn-primary m-t-n-xs pull-right"
                                            style="margin-left: 20px" type="submit" value="取消 " /> <input
                                            id="submit"
                                            class="btn btn-sm btn-primary m-t-n-xs pull-right"
                                            type="submit" value="确定 " />
                                    </div>
                                </form>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    </form>

7.新建活动 ,并跳转到显示页面
7.1在struts.xml中配置addActivity
<action name="addActivity" class="webAction" method="addActivity">
            <result name="success" type="chain">allActivity</result>
        </action>
7.2反向工程活动表
 
7.3编写 activityDao
public interface ActivityDao {
    public double pageSum(int i);    // 页数
    public List<Activity> allActivity(int i, int j);// 查询所有活动
}
实现activityDao
    @Override
    public double pageSum(int i) {
        Session session = getSession();
        Query query;
        if (i == 0) {    //如果编号不是1到6之间的就获取所有活动数量
            query = session
                    .createQuery("select count(*) from Activity where r_status!=-1");
        } else {    //否则获取相应权限的活动数量
            query = session
                    .createQuery("select count(*) from Activity where r_status!=-1 and r_type=?");
            query.setParameter(0, ++i);
        }
        Long b = (Long) query.uniqueResult();    
        double a = b;
        session.close();
        return a;
    }
反向工程ActivityType表
 
向activity.java中增加这三个属性acttype,address,teacher
    private ActivityType acttype;
    private Address address;
    private Teacher teacher;
    
    public ActivityType getActtype() {
        return acttype;
    }

    public void setActtype(ActivityType acttype) {
        this.acttype = acttype;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    public Teacher getTeacher() {
        return teacher;
    }

    public void setTeacher(Teacher teacher) {
        this.teacher = teacher;
    }
查询所有的活动,并为每个活动赋上acttype,address,teacher,方便在jsp页面显示相关信息
// 查询所有活动
    @SuppressWarnings("unchecked")
    @Override
    public List<Activity> allActivity(int i, int k) {
        List<Teacher> list = null;
        List<ActivityType> list2 = null;
        List<Address> list3 = null;
        Session ssn = getSession();
        Query query;
        if (k == 0) {
            query = ssn
                    .createQuery("from Activity where RStatus!=-1 order by RId desc");
        } else {
            query = ssn
                    .createQuery("from Activity where RStatus!=-1 and RType=? order by RId desc");
            query.setParameter(0, ++k);
        }
        // System.out.println(i);
        query.setFirstResult(i);
        query.setMaxResults(7);
        List<Activity> l = query.list();
        int len = l.size();
        if (len != 0) {
            String[] values1 = new String[len];
            Object[] values2 = new Object[len];
            Object[] values3 = new Object[len];
            StringBuilder sb = new StringBuilder();
            StringBuilder sb2 = new StringBuilder();
            StringBuilder sb3 = new StringBuilder();
            // System.out.println(len+","+values1.length);
            for (int j = 0; j < len; j++) {
                values1[j] = l.get(j).getRTId();
                values2[j] = l.get(j).getRType();
                values3[j] = l.get(j).getRAddress();
                if (j != len - 1) {
                    sb.append("?,");
                    sb2.append("?,");
                    sb3.append("?,");
                } else {
                    sb.append("?");
                    sb2.append("?");
                    sb3.append("?");
                }
            }
            // System.out.println(values3[1]+","+values3[3]);
            // System.out.println(sb);

            // 这里的list查询出来的应该包含TeacherId吧
            list = getHibernateTemplate().find(
                    "FROM Teacher t WHERE t.id.TTeacherId IN (" + sb.toString()
                            + ")", values1);
            list2 = getHibernateTemplate().find(
                    "FROM ActivityType t WHERE t.aid IN (" + sb2.toString()
                            + ")", values2);
            list3 = getHibernateTemplate().find(
                    "FROM Address t WHERE t.id IN (" + sb3.toString() + ")",
                    values3);

            // System.out.println(list3.size());
            ssn.close();
            // System.out.println(list3.get(0).getName());
            for (Activity a : l) {
                for (Teacher entity : list)
                    if (a.getRTId().equals(entity.getId().getTTeacherId())) {
                        a.setTeacher(entity);
                        break;
                    }
                for (ActivityType entity1 : list2)
                    if (a.getRType() == entity1.getAid()) {
                        a.setActtype(entity1);
                        break;
                    }
                for (Address entity2 : list3)
                    // System.out.println(a.getRAddress()+"lose"+entity2.getId());
                    if (a.getRAddress().equals(entity2.getId())) {
                        a.setAddress(entity2);
                        break;
                    }
            }

        }
        return l;

    }
7.4编写addActivity  action
增加以下属性
private int zdcollege;
private int type;        //活动类别
private int item;        //活动形式
private double credit;        //学分
private Integer peopleNum;
private Timestamp startTime1;
private Timestamp endTime1;
private Timestamp startTime2;
private Timestamp endTime2;
private String fkTeacherId;
private String desc;    //活动详情
private String college;    //举办学院
private File file1;
private String file1FileName;
在teacherDao中增加方法
public Object isExist(String fkTeacherId);    //判断是否存在这个老师
    @Override
    public Teacher isExist(String tId) {
        // TODO Auto-generated method stub
        List<Teacher> list = getHibernateTemplate().find(
                "from Teacher s where s.id.TTeacherId=?", tId);
        if (list.size()>0) {
            return list.get(0);
        }else{
        return null;
        }
    }
导入图片工具类PhotoYsImp
activityDao中增加方法,增加一个活动
// 添加活动
    @Override
    public void addActivity(Activity activity) {
        // TODO Auto-generated method stub
        this.getHibernateTemplate().save(activity);
    }
最后在WebActivity中增加action
    @SuppressWarnings("deprecation")
    public String addActivity() throws IOException {
        Activity activity = new Activity();
        activity.setRName(this.getName());
        activity.setRZdcollege(this.getZdcollege());
        activity.setRType(this.getType());
        activity.setRItem(this.getItem());
        activity.setRCredit(this.getCredit());
        activity.setRMaximum(this.getPeopleNum());
        activity.setRStartTime(startTime1);
        activity.setREndTime(endTime1);
        activity.setRStartTimeTwo(startTime2);
        activity.setREndTimeTwo(endTime2);
        // System.out.println("newActivity"+this.getFkTeacherId());
        if (teacherDao.isExist(this.getFkTeacherId()) != null)
            activity.setRTId(this.getFkTeacherId());
        else
            activity.setRTId("770066");
        activity.setRAddress(this.getAddressId());
        activity.setRIntroduction(this.getDesc());
        activity.setRNowmum(0);
        activity.setRPopular(0);
        activity.setRSearchnum(0);
        activity.setRClicknum(0);
        activity.setRTu(5);
        activity.setRRecsign(0);// 初始时为不推荐活动
        switch (this.getCollege()) {
        case "1":
            activity.setRCollege("全部学院");
            break;
        case "2":
            activity.setRCollege("之江学院");
            break;
        case "3":
            activity.setRCollege("信息学院");
            break;
        case "4":
            activity.setRCollege("人文学院");
            break;
        case "5":
            activity.setRCollege("商学院");
            break;
        case "6":
            activity.setRCollege("设计学院");
            break;
        case "7":
            activity.setRCollege("外国语学院");
            break;
        case "8":
            activity.setRCollege("机械学院");
            break;
        case "9":
            activity.setRCollege("中旅学院");
            break;
        case "10":
            activity.setRCollege("建筑学院");
            break;
        case "11":
            activity.setRCollege("理学院");
            break;
        case "12":
            activity.setRCollege("创新创业学院");
            break;
        default:
            break;
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateNowStr = sdf.format(new Date());
        activity.setRCreateTime(Timestamp.valueOf(dateNowStr));
        activity.setRChangeTime(Timestamp.valueOf(dateNowStr));
        activity.setRStatus(2);
        // 上传图片
        if (file1 != null) {
            String path = ServletActionContext.getRequest().getRealPath(
                    "/image");
            // 获取后缀名字
            String hz = file1FileName.substring(file1FileName.lastIndexOf("."));
            String newfilename = UUID.randomUUID().toString() + hz;// uuid不重复;
            OutputStream os = new FileOutputStream(new File(path, newfilename));
            String h = " http://localhost:8080/SDSYwZJF/image/ " + newfilename;
            activity.setRPicture(h);
            InputStream is = new FileInputStream(file1);
            byte[] buf = new byte[1024];
            int length = 0;
            while (-1 != (length = is.read(buf))) {
                os.write(buf, 0, length);
            }
            PhotoYsImp p = new PhotoYsImp();
            p.photoYs(path + "/" + newfilename, 400, 400);// 对图片进行压缩。
            is.close();
            os.close();
        } else {
            activity.setRPicture("https://sdsy.zzjc.edu.cn/SDSYw/image/1.jpg");
        }
        activityDao.addActivity(activity);
        return "success";
    }
7.5编写 allActivity action
增加activityDao并在applicationContext.xml中配置
ActivityDao activityDao;
    
    public ActivityDao getActivityDao() {
        return activityDao;
    }

    public void setActivityDao(ActivityDao activityDao) {
        this.activityDao = activityDao;
    }

<list>
                <value>web/model/Address.hbm.xml</value>
                <value>web/model/SysMenu.hbm.xml</value>
                <value>web/model/Teacher.hbm.xml</value>
                <value>web/model/Activity.hbm.xml</value>
                <value>web/model/ActivityType.hbm.xml</value>
            </list>
<bean id="activityDaoImp" class="web.dao.imp.ActivityDaoImp">
        <property name="sessionFactory" ref="mysessionFactory"></property>
    </bean>
    <bean id="webAction" class="web.action.WebAction">
        <property name="addressDao" ref="addressDaoImp"></property>
        <property name="sysMenuDao" ref="sysMenuDaoImp"></property>
        <property name="teacherDao" ref="teacherDaoImp"></property>
        <property name="activityDao" ref="activityDaoImp"></property>
    </bean>
增加活动页码的相关属性,以及activitylist,用于jsp页面分页显示
private int pageSum, page;// 活动页码
    private List<Activity> activitylist = new ArrayList<Activity>();
    
    public int getPageSum() {
        return pageSum;
    }

    public void setPageSum(int pageSum) {
        this.pageSum = pageSum;
    }

    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public List<Activity> getActivitylist() {
        return activitylist;
    }

    public void setActivitylist(List<Activity> activitylist) {
        this.activitylist = activitylist;
    }
后台管理主页
@SuppressWarnings("unchecked")
    public String allActivity() throws Exception {
        String loginid = (String) session.get("loginid");
        int i = 0;
        switch (loginid) {    //判断loginid是否是1到6,那六个模块
        case "000001":
            i = 1;
            break;
        case "000002":
            i = 2;
            break;
        case "000003":
            i = 3;
            break;
        case "000004":
            i = 4;
            break;
        case "000005":
            i = 5;
            break;
        case "000006":
            i = 6;
            break;
        }
        // System.out.println(loginid+"ss"+i);
        double x = activityDao.pageSum(i);
        if (x != 0) {
            Integer pa = (Integer) session.get("actpag");
            pageSum = (int) (activityDao.pageSum(i) / 7 + 0.99);
            if (pageSum == 0)
                pageSum = 1;
            if (n == 0)
                pa = 1;
            else if (n == 1 && pa > 0)
                pa = pa - 1;
            else if (n == 2 && pa < pageSum)
                pa = pa + 1;
            else if (n == 3 && pa < pageSum)
                pa = pageSum;
            page = pa;
            activitylist = activityDao.allActivity((pa - 1) * 7, i);
            session.put("actpag", pa);
        } else {
            activitylist = null;
        }
        // System.out.println("OK ");
        return "success";
    }
7.6编写informationlist.jsp用于显示全部活动
导入文件
<link href="jules/css/bootstrap.min14ed.css?v=3.3.6" rel="stylesheet">
<link href="jules/css/style.min862f.css?v=4.1.0" rel="stylesheet">
样式中与publishActivity中不同的如下
Tab(tab-content, tab-pane)    标签页插件    jules/css/bootstrap.min14ed.css
full-height-scroll    实现面板内部的滚轮滚动,而非整个页面的滚动    jules/css/bootstrap.min14ed.css
table-striped table-hover    表格样式,table-striped可以使奇数行的背景设为灰色,table-hover鼠标悬停变色    jules/css/bootstrap.min14ed.css
<%@page contentType="text/html; charset=UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page isELIgnored="false"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!--  后台主页  -->
<title>活动列表</title>

<link href="jules/css/bootstrap.min14ed.css?v=3.3.6" rel="stylesheet">
<link href="jules/css/style.min862f.css?v=4.1.0" rel="stylesheet">

</head>

<body class="gray-bg">
    <div class="wrapper wrapper-content  animated fadeInRight">
        <div class="row">
            <div class="col-sm-12">
                <div class="ibox">
                    <div class="ibox-content">
                        <h2>所有信息列表</h2>
                        <div class="clients-list">
                            <div class="tab-content">
                                <div id="tab-1" class="tab-pane active">
                                    <div class="full-height-scroll">
                                        <div class="table-responsive">
                                            <table class="table table-striped table-hover">
                                                <tbody>
                                                    <c:forEach items="${activitylist}" var="res">
                                                        <tr style="height:80px">
                                                            <td><img src="${res.RPicture}" width="60px;"
                                                                height="60px;" /></td>
                                                        <td style="width: 160px">活动号: <br /> <small>
                                                                    ${res.RId} </small>
                                                            </td>
                                                            <td style="width: 160px">活动名称: <br /> <small>
                                                                    ${res.RName} </small>
                                                            </td>
                                                            <td class="project-title">活动负责人: <br /> <small>
                                                                    ${res.teacher.TName}&nbsp; </small>
                                                            </td>
                                                            <td class="project-title">活动地址: <br /> <small>
                                                                    ${res.address.name}&nbsp; </small>
                                                            </td>
                                                            <td class="project-title" ><small >举办日期:</small> <br />
                                                                    <fmt:formatDate value="${res.RStartTime}"
                                                                        pattern="yyyy-MM-dd HH:mm" />&nbsp;
                                                            </small>
                                                            </td>
                                                            <td>人数:${res.RMaximum}&nbsp;</td>
                                                            <td>活动类型: <c:choose>
                                                                    <c:when test="${res.RType  == 2 }">
                                                                        <span>博雅读书</span>
                                                                    </c:when>
                                                                    <c:when test="${res.RType  == 3 }">
                                                                        <span>博雅"心晴"</span>
                                                                    </c:when>
                                                                    <c:when test="${res.RType  == 4 }">
                                                                        <span>博雅实践</span>
                                                                    </c:when>
                                                                    <c:when test="${res.RType  == 5 }">
                                                                        <span>博雅讲坛</span>
                                                                    </c:when>
                                                                    <c:when test="${res.RType  == 6 }">
                                                                        <span>博雅修身</span>
                                                                    </c:when>
                                                                    <c:when test="${res.RType  == 7 }">
                                                                        <span>博雅视野</span>
                                                                    </c:when>
                                                                </c:choose>
                                                            </td>
                                                                <c:if test="${sessionScope.power == 0}">
                                                                <td style="text-align:center;width: 20px;">
                                                                    <button onClick="xiugai(${res.RId})"
                                                                        type="button" class="btn btn-primary btn-xs">
                                                                        <span>时间编辑</span>
                                                                    </button>
                                                                    &nbsp;    &nbsp;    &nbsp;
                                                                    <button onClick="qiandao(${res.RId})"
                                                                        type="button" class="btn btn-primary btn-xs">
                                                                        <span>签到管理</span>
                                                                    </button>
                                                                </td>
                                                            </c:if>
                                                            <c:if test="${sessionScope.power == 0}">
                                                                <td style="text-align:center;width: 20px;">
                                                                    <button onClick="actTixing(${res.RId})"
                                                                        type="button" class="btn btn-primary btn-xs">
                                                                        <span>提醒</span>
                                                                    </button>
                                                                </td>
                                                            </c:if>
                                                            
                                                            <td style="text-align:center;width: 20px;"><c:if
                                                                    test="${sessionScope.power == 0}">
                                                                    <button onClick="lookActivity(${res.RId})"
                                                                        type="button" class="btn btn-primary btn-xs">
                                                                        <span>评分</span>
                                                                    </button>
                                                                    &nbsp;    &nbsp;    &nbsp;
                                                                    <button onClick="lookGrade(${res.RId})" type="button"
                                                                    class="btn btn-primary btn-xs">
                                                                    <span>成绩</span>
                                                                </button> 
                                                                </c:if>
                                                            </td>
                                                            <td style="text-align:center;width: 50px;">
                                                                <button onClick="detailActivity(${res.RId})"
                                                                    type="button" class="btn btn-primary btn-xs">
                                                                    <span>详情</span>
                                                                </button>
                                                            </td>
                                                            <td style="text-align:center;width: 50px;"><c:if
                                                                    test="${sessionScope.power == 0}">
                                                                    <c:if test="${res.RStatus!=5}">
                                                                        <button onClick="lunbo(${res.RId})" type="button"
                                                                            class="btn btn-primary btn-xs">
                                                                            <span>轮播图</span>
                                                                        </button>
                                                                    </c:if>
                                                                    <c:if test="${res.RStatus==5}">
                                                                        <button onClick="lunbo(${res.RId})" type="button"
                                                                            class="btn btn-danger btn-xs">
                                                                            <span>轮播图</span>
                                                                        </button>
                                                                    </c:if>
                                                                    &nbsp;    &nbsp;    &nbsp;
                                                                    <c:if test="${res.RRecsign==0}">
                                                                        <button onClick="recoActivity(${res.RId})"
                                                                            type="button" class="btn btn-primary btn-xs">
                                                                            <span>推荐</span>
                                                                        </button>
                                                                    </c:if>
                                                                    <c:if test="${res.RRecsign==1}">
                                                                        <button onClick="recoActivity(${res.RId})"
                                                                            type="button" class="btn btn-danger btn-xs">
                                                                            <span>取消</span>
                                                                        </button>
                                                                        </c:if>
                                                                </c:if></td>
                                                            <td style="text-align:center;width: 50px;"><c:if
                                                                    test="${sessionScope.power == 0}">
                                                                    <button onClick="delActivity(${res.RId})" type="button"
                                                                        class="btn btn-danger btn-xs">
                                                                        <span>删除</span>
                                                                    </button>
                                                                </c:if></td>
                                                        </tr>
                                                    </c:forEach>
                                                </tbody>
                                            </table>
                                            <div style="text-align: center;">
                                                <s:if test="page!=1">
                                                    <a href="allActivity.action?n=0">首页</a>
                                                            &nbsp;
                                                            <a href="allActivity.action?n=1">上一页</a>
                                                </s:if>
                                                <s:if test="page!=PageSum">
                                                            &nbsp;
                                                            <a href="allActivity.action?n=2">下一页</a>
                                                            &nbsp;
                                                            <a href="allActivity.action?n=3">尾页</a>
                                                </s:if>
                                                &nbsp;第${page}页/共${PageSum}页
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>

运行程序
 

8.功能实现
8.1注销功能的实现
在js中增加unLoign方法
    <script type="text/javascript">
    //退出当前
    function unLogin() {
        parent.location.href = "login.jsp"
    }
    </script>
然后在下拉框中调用unLogin方法
<ul class="dropdown-menu">
                    <li><a class="menu_a" link="allActivity.action"><i
                            class="icon-check"></i> 我的发布</a></li>
                    <li class="divider"></li>
                    <li><a class="menu_a" onclick="unLogin(this)"><i
                            class="icon-key"></i> 退出系统</a></li>
                </ul</li>
8.2删除按钮的功能实现
增加一个删除方法,页面跳转到deleteActivity.action
<script type="text/javascript">
    // 删除
    function delActivity(id) {
        if (confirm("确认删除?")) {
            var url = "deleteActivity.action?id=" + id;
            window.location.href = url;
        }
    }
</script>
在button的点击事件调用这个方法
<button onClick="delActivity(${res.RId})" type="button"
                                                                        class="btn btn-danger btn-xs">
                                                                        <span>删除</span>
                                                                    </button>
在webAction中增加deleteActivity方法
// 删除活动 将活动状态改变
    public String deleteActivity() throws Exception {
        Activity activity = activityDao.findoneActivity(id);
        if (activity != null) {
            activity.setRStatus(-1);    //将活动状态设为-1
            activityDao.deleteActivity(activity);
            return "success";
        } else
            return "faile";

    }
此时需要在activityDao中增加deleteActivity方法,实际上就是让tRStatus为-1
    // 删除活动
    @Override
    public void deleteActivity(Activity activity) {
        this.getHibernateTemplate().update(activity);
    }
在strut.xml中进行配置
如果成功则跳转到allActivity,如果删除失败就跳转到faile.jsp
    <action name="deleteActivity" class="webAction" method="deleteActivity">
            <result name="success" type="chain">allActivity</result>
            <result name="faile">faile.jsp</result>
        </action>
删除失败
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'faile.jsp' starting page</title>
  </head>
  <body><h1>操作失败</h1>
  </body>
</html>

猜你喜欢

转载自blog.csdn.net/Draven__/article/details/81196029