希望将这个记录在博客上不仅可以让我在未来学习中可以回过头来复习查错,也能让其它学习路上的小伙伴能够更好的解决类似的问题。
因为在做一个简单的系统,需要做到前台修改数据库中数据的功能,所以必须要先读取出对应的要修改的用户的信息到jsp页面中,并且将数据库中的数据赋值给jsp表单中的各项,然后我们才能再进行修改。
所以我学习JSTl 和EL取session 本意是为了:在数据库中取出一条用户信息放到一个Java类(use)里边,然后根据这个user实例中的 usertype 用户类型 判断是管理员还是普通用户,然后根据这个判断来选取对应的option(select标签的)
//Servlet代码:
//获取jsp表单中的要查询用户名
String username = request.getParameter("username");
//查到数据库中有这个用户,并获得对应信息放进user类中
User user = DaoFactory.getUserDaoInstance().findByUsername(username);
//fd_usertype是用户类型
session.setAttribute("usertype", user.getFd_usertype());
//user是一个java类,后台servlet将user存进一个session
session.setAttribute("user", user);
然后在有修改功能的jsp页面中:
...
<option>请选择</option>
<option value="管理员" <c:if test="${sessionScope.user.fd_usertype=='管理员'}" >selected</c:if>>
管理员</option>
<option value="普通用户" <c:if test="${sessionScope.user.fd_usertype=='普通用户'}" >selected</c:if>>
普通用户</option>
...
<c:if test="${sessionScope.user.fd_usertype==‘管理员’}" >selected</c:if>
这个语句获取后台servlet中的session范围的值(这里获取了user),然后判断user.fd_usertype是管理员还是普通用户,是管理员就selected管理员的option,反之selected普通用户的option。
这样就可以实现了我要实现的功能
这里也同样适用于判断性别等 帮助 radius类型的input标签来自动选取对应的值,代码如下(和上面的大同小异):
input name="gender" id="male" type="radio" value="男" <c:if test="${sessionScope.user.fd_gender=='男'}" >checked</c:if>/>男
<input name="gender" id="female" type="radio" value="女" <c:if test="${sessionScope.user.fd_gender=='女'}" >checked</c:if>/>女</td>