Java Web简明教程–Servlet篇[6]–漂亮的终结篇

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

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


${},学名“EL表达式”,功能强大,具体负责将Servlet中request和response对象中的属性值取出来。

举个栗子:

在Servlet中有这么一句request.setAtrribute("className","二年级三班");

在网页中可以这样取值${className}

太简单了!

1

2

3

4

5

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


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

1

好的,现在举个例子,有三个文件,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>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

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");

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

<%@ 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>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

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

相关文章
|
25天前
|
开发框架 前端开发 JavaScript
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
|
3天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
17天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
95 26
|
26天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
48 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
24天前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
24天前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
1月前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
33 2
|
1月前
|
Java Maven Spring
Java Web 应用中,资源文件的位置和加载方式
在Java Web应用中,资源文件如配置文件、静态文件等通常放置在特定目录下,如WEB-INF或classes。通过类加载器或Servlet上下文路径可实现资源的加载与访问。正确管理资源位置与加载方式对应用的稳定性和可维护性至关重要。
59 6
|
1月前
|
存储 安全 搜索推荐
理解Session和Cookie:Java Web开发中的用户状态管理
理解Session和Cookie:Java Web开发中的用户状态管理
74 4
|
23天前
|
Java 数据库连接 编译器
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
42 0