下图为管理员登录页面
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=”intro”的元素element
(“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)”)列表中的第四个元素(index从0开始):gt(no)
(“ul li:gt(3)”) 列出 index 大于 3 的元素
:lt(no)
(“ulli:lt(3)”)列出index小于3的元素: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"> </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更新
板块部分
未完待续………….