JAVAWEB_实验三 Servlet 相关技术
创始人
2024-03-14 01:29:37
0次

文章目录

  • Servlet 基础
    • 一、 实验目的
    • 二、 实验要求
    • 三、 实验内容
  • 过滤器
    • 一、 实验目的
    • 二、 实验原理
    • 三、 实验内容
    • 试简述过滤器有哪些功能?
  • 实现一个查询天气的 web 程序


Servlet 基础

一、 实验目的

理解 Servlet 的工作原理,掌握 Servlet 的应用开发方法;掌握常见 Servlet ;

二、 实验要求

  1. 理解 Servlet 的应用。
  2. 掌握 Servlet 的编程技术。
  3. 熟练使用 Eclipse 开发 Servlet 应用

三、 实验内容

(一)用 Servlet 获取表单数据

  1. 建立一个 Servlet 文件 accept.java 和一个 register.jsp 文件,实现用 Servlet 实现获取表单数据的功能。
    程序功能:利用 Servlet 的方式实现表单数据的获取。
    accept.java
package servlet;import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet(urlPatterns = {"/accept"})
public class accept extends HttpServlet {public String codeToString(String str) {//处理中文字符串的函数String s = str;try {byte tempB[] = s.getBytes("ISO-8859-1");s = new String(tempB);return s;} catch (Exception e) {return s;}}public void init(ServletConfig config) throws ServletException {super.init(config);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
//设置mimeresponse.setContentType("text/html;charset=GB2312");PrintWriter out = response.getWriter();out.println("接收新用户注册");out.println("这是新用户注册所提交的数据:
");out.println("用户名是:" + codeToString(request.getParameter("username")) + "
");out.println("密码是:" + codeToString(request.getParameter("userpassword")) + "
");out.println("性别是:" + codeToString(request.getParameter("sex")) + "
");out.println("出生年月是:" + request.getParameter("year") + request.getParameter("month") + request.getParameter("day") + "
");out.println("电子邮箱是:" + request.getParameter("email") + "
");out.println("家庭住址是:" + codeToString(request.getParameter("address")) + "
");out.println(" ");} }

register.jsp

<%@ page contentType="text/html;charset=gb2312" %>


新用户注册


新用户注册
用户名(*):
密  码(*):
再输一次密码(*):
性别:男女
出生年月:年月日
电子邮箱(*):
家庭住址:

运行结果:
在这里插入图片描述
在这里插入图片描述

过滤器

一、 实验目的

  1. 了解过滤器的作用;
  2. 掌握过滤器的开发与部署的步骤;
  3. 了解过滤器链。

二、 实验原理

过滤器是 web 服务器上的组件,它们对客户和资源之间的请求和响应进行过滤。
过滤器的工作原理是:当servlet容器接收到对某个资源的请求,它要检查是否有过滤器与之关联。如果有过滤器与该资源关联,servlet容器将把该请求发送给过滤器。在过滤器处理完请求后,它将做下面3件事:

  • 产生响应并将其返回给客户;
  • 如果有过滤器链,它将把(修改过或没有修改过)请求传递给下一个过滤器;
  • 将请求传递给不同的资源。当请求返回到客户时,它是以相反的方向经过同一组过滤器返回。过滤器链中的每个过滤器够可能修改响应。

过滤器 API 主要包括:Filter、FilterConfig 和 FilterChain 接口。

三、 实验内容

编写一个过滤器改变请求编码
【步骤 1】编写一个 loginform.html 文件,代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

使用过滤器改变请求编码


请输入用户名和口令:

用户名:
口 令:

【步骤 2】编写处理请求参数的 Servlet

package servlet;import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;public class CheckParamServlet extends HttpServlet {public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {String name = request.getParameter("name");String pass = request.getParameter("pass");response.setContentType("text/html;charset=gb2312");PrintWriter out = response.getWriter();out.println("Param Test");out.println("

你的用户名为:" + name + "

");out.println("

你的口令为:" + pass + "

");out.println("");}public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {doGet(request, response);} }

【步骤 3】修改 web.xml 文件,加入下面代码:

CheckParamServletservlet.CheckParamServletCheckParamServlet/servlet/CheckParamServlet

【步骤 4】在浏览器的地址栏中输入下面 URL: http://localhost:8080/ helloapp/loginform.html
输入用户名和口令,如下图所示:
在这里插入图片描述

然后点击“提交”按钮,经 CheckParamServlet 处理后返回的结果如下图所示:
在这里插入图片描述
【步骤 5】过滤器代码如下:

package filter;import java.io.IOException;
import javax.servlet.*;public class EncodingFilter implements Filter {protected String encoding = null;protected FilterConfig config;public void init(FilterConfig filterConfig) throws ServletException {this.config = filterConfig;
// 得到在 web.xml 中配置的编码this.encoding = filterConfig.getInitParameter("Encoding");}public void doFilter(ServletRequest request,ServletResponse response, FilterChain chain) throws IOException, ServletException {if (request.getCharacterEncoding() == null) {
// 得到指定的编码String encode = getEncoding();if (encode != null) {
//设置 request 的编码request.setCharacterEncoding(encode);response.setCharacterEncoding(encode);}}chain.doFilter(request, response);}protected String getEncoding() {return encoding;}public void destroy() {}
}

【步骤 6】在 web.xml 文件中配置过滤器,加入下面代码:

CheckParamServletservlet.CheckParamServletCheckParamServlet/servlet/CheckParamServletEncodingFilterfilter.EncodingFilterEncodingUTF-8EncodingFilter/*

【步骤 7】重复第(4)步操作,结果如下:
在这里插入图片描述

试简述过滤器有哪些功能?

答:本题过滤器的作用是在客户端和服务端之间指定 request 的编码,对乱码问题进行修改,从而将乱码转变为中文编码!主要含义是客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改、判断等,把不符合规则的请求在中途拦截或修改。也可以对响应进行过滤,拦截或修改响应。浏览器发出的请求先递交给第一个filter进行过滤,符合规则则放行,递交给filter链中的下一个过滤器进行过滤。过滤器在链中的顺序与它在web.xml中配置的顺序有关,配置在前的则位于链的前端。当请求通过了链中所有过滤器后就可以访问资源文件了,如果不能通过,则可能在中间某个过滤器中被处理掉。
如何理解过滤器链。
答:在 Web 应用中,可以部署多个 Filter,若这些 Filter 都拦截同一目标资源,则它们就组成了一个 Filter 链(也称过滤器链)。过滤器链中的每个过滤器负责特定的操作和任务,客户端的请求在这些过滤器之间传递,直到传递给目标资源。过滤器能够对网站中的各种内容进行过滤(页面、Servlet、图片、文件),可以在网站内容请求和响应时进行一些操作,完成一些通用的功能。

实现一个查询天气的 web 程序

使用表单完成城市的输入,提交使用 ajax 完成查询显示;

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


ajax




运行结果:
在这里插入图片描述

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...