猫哥带你去战斗—Java Web开发—Servlet篇[6]—漂亮的终结篇

来源:互联网 发布:新网互联域名转移 编辑:程序博客网 时间:2024/05/29 12:37

本篇是Java Web开发系列的最后一篇,接下来猫哥将开始《猫哥带你去战斗—使用JSP+Servlet开发培训班作业管理系统》,新的系列将承接Java Web开发,主要依赖HTML、Java、Servlet、JSP这些基本技术开发一个培训班作业管理系统。

OK,在Servlet篇的最后,猫哥介绍两个东西${}<c:forEach>

${},学名“EL表达式”,功能强大,具体负责将Servlet中requestresponse对象中的属性值取出来。举个栗子:在Servlet中有这么一句request.setAtrribute("className""二年级三班");在网页中可以这样取值${className}太简单了!

OK,当然,最常用的还是循环,借助EL表达式和<c:forEach>,就可以解决。

<c:forEach>属于JSP标准标签库(JSTL),用来遍历。

好的,现在举个例子,有三个文件,classStudent.html用来选择班级,ClassServlet用来处理classStudent.html提交的请求,classStudentList.jsp用来显示结果,三个文件代码如下:

<!DOCTYPE html><html>  <head>    <title>classStudent.html</title>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><!-- 本行用来设置编码 -->  </head>  <body>     <form name="mainForm" method="post" action="/ServletDemo/ClassServlet"><!-- 表单提交给ClassServlet-->        请选择要查询的班级:        <select name="class">            <!--此处注意分别对应class_info表的class_id和class_name-->            <!--实际上这三个班级信息也应该是从数据库中查出,此处为了方便演示直接写死,因为我们要演示的重点是Servlet输出数据到网页-->            <option value="1">一班</option>            <option value="2">二班</option>            <option value="3">三班</option>        </select>        <br/>        <input type="submit"></input>    </form>  </body></html>
package servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import entity.StudentInfo;import operation.StudentOperation;/** * ClassServlet类 * @author 猫哥 */public class ClassServlet extends HttpServlet {    public ClassServlet() {        super();    }    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        response.setContentType("text/html");//设置输入格式        response.setContentType("text/html");        request.setCharacterEncoding("utf-8");        response.setCharacterEncoding("utf-8");        String classId=request.getParameter("class");//获取要查询的班级id        //此处要从数据库中查询classId对应班级的学生信息        StudentOperation stuOper=new StudentOperation();        //将班级的学生信息输出        List students=stuOper.selectByClassId(classId);        request.setAttribute("students", students);        //只能跳转本Web项目网页,可以request.setAttribute传值,看见后面request作为参数了?        request.getRequestDispatcher("/classStudentList.jsp").forward(request,response);        //跳转任何路径,无法使用request.setAttribute来传值,所以此处使用不行。        //response.sendRedirect("/classStudentList.jsp");    }}
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!-- 使用c:标签需要添加本行代码 --><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>classStudentList.jsp</title>  </head>  <body>    该班的学生有:<br/>    <c:forEach items="${students}" var="item">        姓名:${item.studentName}          班级:${item.studentClass.className}<br/>    </c:forEach>    该班的学生有:<br/>    <table border="1">        <c:forEach items="${students}" var="item">        <tr>        <td>姓名:${item.studentName}</td>        <td>${item.studentClass.className}</td>    </c:forEach>    </table>  </body></html>

可见使用了JSP标准标签库和EL表达式后,网页代码中只剩各类标签和表达式,可以说基本实现了前后端的分离,从此JSP或HTML负责前台显示及从后台取数,Servlet负责逻辑处理及数据库查询或修改操作。各司其职。

0 0
原创粉丝点击