BBS论坛项目 I

下图为管理员登录页面
这里写图片描述

login.jsp页面知识点汇总

主要涉及到js与jquery转换的登陆验证。

$(function() {
    $('#login').click(function() {
        var name_state = $('#name');
        var psd_state = $('#psd');
        var name = $('#name').val();
        var psd = $('#psd').val();
        if (name == '') {
            name_state.parent().next().next().css("display", "block");
            return false;
        } else if (psd == '') {
            name_state.parent().next().next().css("display", "none");
            psd_state.parent().next().next().css("display", "block");
            return false;
        } else {
            name_state.parent().next().next().css("display", "none");
            psd_state.parent().next().next().css("display", "none");
            $('.login').submit();
        }
    });
    $('#register').click(function() {
        var name_r_state = $('#name_r');
        var psd_r_state = $('#psd_r');
        var affirm_psd_state = $('#affirm_psd');
        var name_r = $('#name_r').val();
        var psd_r = $('#psd_r').val();
        var affirm_psd = $('#affirm_psd').val();
        if (name_r == '') {
            name_r_state.parent().next().next().css("display", "block");
            return false;
        } else if (psd_r == '') {
            psd_r_state.parent().next().next().css("display", "block");
            return false;
        } else if (affirm_psd == '') {
            affirm_psd_state.parent().next().next().css("display", "block");
            return false;
        } else if (psd_r != affirm_psd) {
            return false;
        } else {
            $('.register').submit();
        }
    })
    })
name_state.parent().next().next().css("display", "block");

parent() 获得当前匹配元素集合中每个元素的父元素,使用选择器进行筛选是可选的。
next() 获得匹配元素集合中每个元素紧邻的同胞元素。如果提供选择器,则取回匹配该选择器的下一个同胞元素。
(“#id”)  id选择器(“.class”) class选择器
$(“p”) 元素选择器
….
回顾jquery选择器
选择器 实例 选取
* ()id (“#lastname”) id=”lastname” 的元素
.class (.intro)class=introelement (“p”) 所有

元素
.class.class $(“.intro.demo”) 所有 class=”intro” 且 class=”demo” 的元素

:first $(“p:first”) 第一个

元素
:last $(“p:last”) 最后一个

元素
:even (tr:even):odd (“tr:odd”) 所有奇数 元素

:eq(index) (ulli:eq(3))index0:gt(no) (“ul li:gt(3)”) 列出 index 大于 3 的元素
:lt(no) (ulli:lt(3))index3:not(selector) (“input:not(:empty)”) 所有不为空的 input 元素

:header $(“:header”) 所有标题元素

-


:animated 所有动画元素

:contains(text) (:contains(W3School)):empty (“:empty”) 无子(元素)节点的所有元素
:hidden $(“p:hidden”) 所有隐藏的

元素
:visible $(“table:visible”) 所有可见的表格

s1,s2,s3 $(“th,td,.intro”) 所有带有匹配选择的元素

[attribute] ([href])href[attribute=value] (“[href=’#’]”) 所有 href 属性的值等于 “#” 的元素
[attribute!=value] (“[href!=’#’]”)   所有 href 属性的值不等于 “#” 的元素  
[attribute
=value] ([href =’.jpg’]”) 所有 href 属性的值包含以 “.jpg” 结尾的元素

:input (:input):text (“:text”) 所有 type=”text” 的 元素
:password (:password)type=password:radio (“:radio”) 所有 type=”radio” 的 元素
:checkbox (:checkbox)type=checkbox:submit (“:submit”) 所有 type=”submit” 的 元素
:reset (:reset)type=reset:button (“:button”) 所有 type=”button” 的 元素
:image (:image)type=image:file (“:file”) 所有 type=”file” 的 元素

:enabled (:enabled)input:disabled (“:disabled”) 所有禁用的 input 元素
:selected (:selected)input:checked (“:checked”) 所有被选中的 input 元素
注意:
this,表示当前的上下文对象是一个html DOM对象,可以调用html对象所拥有的属性,方法。
$(this),代表的上下文对象是一个jquery的上下文对象,可以调用jquery的方法和属性值。

function ok_or_errorBylogin(l) {

    var content = $(l).val();
    if (content != "") {
        $(l).parent().next().next().css("display", "none");
    }
}

参数可以随便写,只要函数中传的参数和函数内的参数一样就行。


如果登陆成功

    <form action="${initParam.p }/admin_login" class="login" method="post">

跳转到 AdminAction
这里写图片描述

这个login方法是把账号密码写死了!把Action做成一个model,就可以得到请求参数。

成功之后跳到home.jsp 页面
这里写图片描述

增加板块

<table border="0" cellpadding="0" cellspacing="0"
                    class="leftsidebar-content">
                    <tr>
                        <td class="leftsidebar-content-dot">&nbsp;</td>
                        <td><a href="${initParam.p }/board_saveUI" target="iframe_name"
                            target="iframe_name">添加版块</a>
                        </td>
                    </tr>
                </table>

这里写图片描述

saveUI.jsp中form标签用了一个三元运算符来判断哪个action
如果这个版块目前还没有id那就使用save方法!
点确定到BoardAction中的save()
然后到boardService,到它的实现类中找
这里写图片描述

service层然后到dao层中寻找
这里写图片描述
通过hibernate与数据库进行交互
这里写图片描述

这里要注意的是使用getCurrentSession()
为的是获取与当前线程绑定的session
也就是说,只要在一个线程之内,任何地方,使用该方法获取session,都获取的是同一个session
想要使用该功能,必须在hibernate.cfg.xml中添加一个配置

    <property name="current_session_context_class">thread</property>

private IBoardDao dao=IBoardDaoFactory.getDao();
这个是在service中获取dao层
以上的增部分!


查看板块


这里写图片描述
这里写图片描述

<td><a href="${initParam.p }/board_find"
跳到board_find 

这里写图片描述

调用service层中的finByPage(p); 方法
这里写图片描述

通过接口中的方法去调用实现类中的方法
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述
用hql语句查询总行数
到Page类中构造方法
这个构造方法有两个参数是用来计算几页的或者说是最大页数!
这里写图片描述

然后到BoardServiceImpl中继续往下走
这里写图片描述

这里写图片描述
把查到的开始的数字和每页5行数结果集封装到list集合中然后
这里写图片描述
存到page中
这里写图片描述
然后把page存到值栈中,
这里写图片描述
到页面通过ognl获取。


删除


这里写图片描述

href="${initParam.p }/board_delete?bid=<s:property value="#b.bid"/>">删除</a>

删除是通过id去删除的
这里写图片描述
调用service
这里写图片描述
调用实现类
这里写图片描述

查到之后删掉!
然后执行查找更新工作
这里写图片描述


修改板块


这里写图片描述

Action中
这里写图片描述
service层
这里写图片描述

dao层查id
这里写图片描述
存到root中
然后根据id更新
这里写图片描述

板块部分
这里写图片描述

未完待续………….

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值