在添加专业的时候,需要先查询到所有的院系,把所有的院系添加到下拉框中。
在MajorServlet中,需要专门写一个方法,用来加载界面。
添加页面Servlet
public void addPage(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取所有的院系,发送到页面
List collegeList =
collegeService.searchListAll(null);
logger.debug(collegeList);
// 通过request容器,给页面传递一个数据
request.setAttribute("collegeList",collegeList);
//请求转发(forward)到WEB-INF/page/major/majorAdd.jsp页面进行处理
request.getRequestDispatcher("WEB-INF/page/major/majorAdd.jsp")
.forward(request,response);
}
将查询到的collegeList放入到request容器之中。此时,可以将request理解为Map中的key-value。将request的数据转发到majorAdd.jsp当中去,在major.jsp页面处理结果。
HttpServletRequest
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。
在这段代码中,request是作为一个容器使用的。
request对象作为一个域对象(Map容器)使用时,主要是通过以下的四个方法来操作
*
setAttribute(String name,Object o)方法,将数据作为request对象的一个属性存放到request对象中,例如:request.setAttribute(“data”, data);
*
getAttribute(String name)方法,获取request对象的name属性的属性值,例如:request.getAttribute(“data”)
*
removeAttribute(String name)方法,移除request对象的name属性,例如:request.removeAttribute(“data”)
*
getAttributeNames方法,获取request对象的所有属性名,返回的是一个,例如:Enumeration
attrNames = request.getAttributeNames();
院系的下拉框
<div class="layui-form-item">
<label class="layui-form-label">选择院系</label>
<div class="layui-input-block">
<select id="college" name="college" lay-filter="college" lay-verify="required" lay-reqtext="请选择一个院系">
<option value="" selected="">--请选择--</option>
<c:forEach items="${collegeList}" var="college">
<option value="${college.collegeId}">${college.collegeName}
</option>
</c:forEach>
</select>
</div>
</div>
El表达式 的for循环
EL(Expression Language) 是为了使JSP写起来更加简单
在使用El表达式,和C标签的时候,需要在开头加上一行代码,引用一下jstl标签库。
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:forEach items="${collegeList}" var="college">
<option value="${college.collegeId}">${college.collegeName}
</option>
</c:forEach>
${collegeList}是在request容器获得的,用for循环,处理数据。
init.jsp
{
"title": "添加专业",
"href": "BaseServlet.do?servlet=MajorServlet&method=addPage",
"icon": "fa fa-plus-square",
"target": "_self"
}
因为需要数据处理,所以需要此方法跳转页面。