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




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

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...