Java Web应用开发

侯玉香,聂军,雷秦川,骆丽华,陈道敏,苗莹莹,刘叶

目录

  • 1 Java Web概述
    • 1.1 任务导引
    • 1.2 动态网页技术介绍
    • 1.3 JSP的运行环境
    • 1.4 JSP的运行原理
    • 1.5 JSP程序开发模式
    • 1.6 JSP开发工具
    • 1.7 任务实施:搭建项目环境及公司主页设计
    • 1.8 学习测验
  • 2 JSP基本语法
    • 2.1 任务导引
    • 2.2 JSP的基本组成
    • 2.3 脚本元素
    • 2.4 指令元素
    • 2.5 动作元素
    • 2.6 任务实施
    • 2.7 学习测验
  • 3 服务器交互
    • 3.1 任务导引
    • 3.2 课堂实录
    • 3.3 JSP内置对象概述
    • 3.4 out对象
    • 3.5 request对象
    • 3.6 response对象
    • 3.7 session对象
    • 3.8 application对象
    • 3.9 其他内置对象
    • 3.10 任务实施:使用JSP内置对象实现登录和注销功能
    • 3.11 学习测验
  • 4 JavaBean技术
    • 4.1 任务引导
    • 4.2 JavaBean概述
    • 4.3 JavaBean的应用
    • 4.4 JavaBean的作用域
    • 4.5 任务实施
    • 4.6 JSP中的文件操作
    • 4.7 学习测验
  • 5 Servlet技术
    • 5.1 任务引导
    • 5.2 Servlet基础
    • 5.3 Servlet开发
    • 5.4 Servlet常用API
    • 5.5 任务实施
    • 5.6 章节测验
  • 6 第6章 过滤器和监听器
    • 6.1 任务导引
    • 6.2 Servlet过滤器
    • 6.3 过滤器创建与配置
    • 6.4 Servlet监听器
    • 6.5 Servlet3.0新特性
    • 6.6 任务实施
    • 6.7 学习测验
  • 7 Java Web的数据库操作
    • 7.1 任务导引
    • 7.2 JDBC技术
    • 7.3 使用JDBC驱动程序访问数据库
    • 7.4 数据库连接的JavaBean
    • 7.5 JDBC对事务的操作
    • 7.6 连接池技术
    • 7.7 任务实施
    • 7.8 扩展阅读
    • 7.9 章节测验
  • 8 JSP高级技术
    • 8.1 任务导引
    • 8.2 EL概述
    • 8.3 JSTL标签库简介
    • 8.4 JSTL核心标签
    • 8.5 JSP与Ajax
    • 8.6 任务实施
    • 8.7 扩展阅读
    • 8.8 学习测验
  • 9 JSP实用组件技术
    • 9.1 任务导引
    • 9.2 上传与下载组件
    • 9.3 发送E-mail
    • 9.4 JSP动态图表
    • 9.5 在线编辑器
    • 9.6 任务实施
  • 10 教学过程材料
    • 10.1 2024-2025学年第一学期
      • 10.1.1 教学大纲
      • 10.1.2 授课计划
      • 10.1.3 实训指导书
      • 10.1.4 教案
      • 10.1.5 课件PPT
    • 10.2 2024-2025学年第二学期
      • 10.2.1 教学大纲
      • 10.2.2 授课计划
      • 10.2.3 实训指导书
      • 10.2.4 教案
      • 10.2.5 课件PPT
    • 10.3 2025-2026学年第一学期
      • 10.3.1 教学大纲
      • 10.3.2 授课计划
      • 10.3.3 实训指导书
      • 10.3.4 教案
      • 10.3.5 课件PPT
    • 10.4 2025-2026学年第二学期
      • 10.4.1 教学大纲
      • 10.4.2 授课计划
      • 10.4.3 实训指导书
      • 10.4.4 教案
      • 10.4.5 课件PPT
  • 11 课外资料
    • 11.1 电子书
      • 11.1.1 JavaWeb从入门到精通
      • 11.1.2 JavaWeb开发详解
      • 11.1.3 JavaWeb开发之道
      • 11.1.4 深入体验JavaWeb开发内幕-核心基础
      • 11.1.5 学通JavaWeb的24堂课
      • 11.1.6 Java Web 程序设计
      • 11.1.7 Java Web程序设计教程
      • 11.1.8 Java Web设计与应用教程
      • 11.1.9 Java_Web编程新手自学手册
      • 11.1.10 Tomcat and Java Web 开发技术详解
      • 11.1.11 Spring Boot 2+Thymeleaf企业应用实战
      • 11.1.12 Spring Boot+Vue全栈开发实战
      • 11.1.13 Spring实战
      • 11.1.14 JavaEE 8+Tomcat 9
    • 11.2 教学视频
      • 11.2.1 JDBC基础教学视频
      • 11.2.2 JDBC高级应用教学视频
Servlet开发

制作一个Serlvet的完整过程分为四步:一是编写servlet,二是编译servlet并部署到指定位置,三是配置servlet,四是访问servlet。下面重点介绍Serlvet的创建和配置。

1.Servlet创建 

(1)继承HttpServlet类

public class FirstServlet extends HttpServlet { }

(2)根据需要重写doGet、doPost或者service方法

(3)如果有Http请求信息,获取该信息

request.getParameter(arg0)      //获取请求中指定参数的值

request.getParameterNames()    //获取请求所有参数的名字

request.getParameterValues(arg0) //获取请求所有参数的值

(4)生成Http响应

PrintWriter out = response.getWriter();

out.print("<h1>Hello, world!</h1>");

若要设置显示中文,还需要加入如下语句:

response.setContentType("text/html;charset=UTF-8");

案例5-1 手动创建FirstServelt类。

FirstServlet.java:

package ch5;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


public class FirstServlet extends HttpServlet {

//加载Servlet

public FirstServlet() {

super();

}

//初始化Servlet

public void init() throws ServletException {

}

//初始化Servlet

public void destroy() {

super.destroy(); // Just puts "destroy" string in log

}


public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//如果有Http请求信息,获取该信息

request.getParameter("传入的参数");

//生成Http响应

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");

out.println("<HTML>");

out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");

out.println("  <BODY>");

out.print("    This is ");

out.print(this.getClass());

out.println(", using the GET method");

out.println("  </BODY>");

out.println("</HTML>");

out.flush();

out.close();

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doGet(request,response);

}

}

2.Servlet配置  

Servlet如果要正常被访问,还需要对它进行配置,Servlet的配置一般是添加到“web.xml”文件中(见案例5-2)。MyEclipse会对Servlet进行自动配置,我们只要在对话框中输入配置参数即可(见下图)。MyEclipse中Servlet类默认的映射路径是“/servlet/XXServlet”。这里我们不修改,直接点击“Finish”,它会自动生成配置到“web.xml”文件。

【案例5-2】配置Servlet

<?xml version="1.0" encoding="UTF-8"?>


<web-app version="3.0"    xmlns="http://java.sun.com/xml/ns/javaee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">  


<servlet>    <servlet-name>FirstServlet</servlet-name>    <servlet-class>ch5.FirstServlet</servlet-class>  </servlet>  


<servlet>    <servlet-name>MyServlet</servlet-name>    <servlet-class>ch5.MyServlet</servlet-class>  </servlet>   


<servlet-mapping>    <servlet-name>FirstServlet</servlet-name>    <url-pattern>/servlet/FirstServlet</url-pattern>  </servlet-mapping> 

<servlet-mapping>    <servlet-name>MyServlet</servlet-name>    <url-pattern>/servlet/MyServlet</url-pattern>  </servlet-mapping>


</web-app>


Servlet3.0规范允许开发人员采用注解的方式来配置 Servlet、Filter、Listener。它的javax.servlet.annotation 包下提供了注解。

@WebServlet:用于修饰一个 Servlet 类,用于部署 Servlet 类。这种注解写在“.java”文件的Servlet类上面。

使用注解方式配置Servlet

@WebServlet注解用于标注在一个继承了HttpServlet类之上,属于类级别的注解。

@WebServlet注解属性:


1.  loadOnStartup属性:标记容器是否在启动应用时就加载Servlet,默认不配置或数值为负数时表示客户端第一次请求Servlet时再加载;0或正数表示启动应用就加载,正数情况下,数值越小,加载该Servlet的优先级越高;

2.  name属性:可以指定也可以不指定,通过getServletName()可以获取到,若不指定,则为Servlet的完整类名

3.  urlPatterns/value属性: String[]类型,可以配置多个映射,如:urlPatterns={"/user/test", “/user/example”}

4.  urlPatterns的常用规则:
/*或者/:拦截所有
*.do:拦截指定后缀
/user/test:拦截路径
/user/*.do、/*.do、test*.do都是非法的,启动时候会报错


@WebServlet(description = "This is my first Servlet", urlPatterns = { "/servlet/MyServlet" })

public class MyServlet extends HttpServlet {    

    //……此处省略其他代码

}

Serlvet的创建、编译和配置完成之后,最后一步就是访问servlet。打开浏览器,在地址栏输入:http://localhost:8080/项目名称/servlet的URL映射地址。本案例中,我们输入:

http://localhost:8080/Z2_22/servlet/MyServlet