热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

实验三Servlet相关技术

一、实验目的:理解Servlet的工作原理,掌握Servlet的应用开发方法;掌握常见Servlet;二、实验环境

一、实验目的:

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

二、实验环境:

1.理解 Servlet 的应用。

2.掌握 Servlet 的编程技术。

3.熟练使用 Eclipse 开发 Servlet 应用

三、实验内容:

(一)用 Servlet 获取表单数据

1. 建立一个 Servlet 文件 accept.java 和一个 register.jsp 文件,实现用 Servlet 实现获取表单数据的功能。

Accept.java

package com.yiibai;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;/*** Servlet implementation class accept*/@WebServlet("/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=utf-8");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(" ");}/*** @see HttpServlet#HttpServlet()*/public accept() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet1(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubresponse.getWriter().append("Served at: ").append(request.getContextPath());}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost1(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

Register.jsp

<%@ page cOntentType="text/html;charset=utf-8"%>新用户注册
用户名(*):
密  码(*):
再输一次密码(*):
性别:
出生年月:
电子邮箱(*):
家庭住址:

过滤器

【步骤 1】编写一个过滤器改变请求编码:

loginform.html

请输入用户名和口令:

用户名:
口 令:

【步骤 2】编写处理请求参数的 Servlet,代码如

package com.yiibai;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class CheckParamServlet*/@WebServlet("/CheckParamServlet")public class CheckParamServlet extends HttpServlet {private static final long serialVersiOnUID= 1L;/*** @see HttpServlet#HttpServlet()*/public CheckParamServlet() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub//response.getWriter().append("Served at: ").append(request.getContextPath());String name = request.getParameter("name");String pass = request.getParameter("pass");response.setContentType("text/html;charset=gb2312");PrintWriter out = response.getWriter();out.println("");out.println("

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

");out.println("

你的口令为:"+pass+"

");out.println("");}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

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

CheckParamServletCheckParamServletCheckParamServlet/CheckParamServlet

【步骤 5】过滤器代码如下:

package filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.annotation.WebFilter;@WebFilter("/*")public class EncodingFilter implements Filter {protected String encoding = null;protected FilterConfig config;public EncodingFilter() {// TODO Auto-generated constructor stub}public void destroy() {// TODO Auto-generated method stub}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 init(FilterConfig fConfig) throws ServletException {// TODO Auto-generated method stubthis.cOnfig= fConfig;// 得到在 web.xml 中配置的编码this.encoding = fConfig.getInitParameter("Encoding");}}

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

EncodingFilterfilter.EncodingFilter

Encoding

gb2312EncodingFilter/*

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

过滤器对客户和资源之间的请求和响应进行过滤。请求经过一个过滤器到达servlet,servlet产生响应再经过过滤器到达客户,这就在请求和响应到达目的地之前对它们进行监视。过滤器的存在对servlet和客户都是透明的。

2. 如何理解过滤器链。

客户与资源之间建立多个过滤器,从而形成过滤器链。在过滤器链中每个过滤器都是请求处理,然后将请求交给链中的下一个过滤器(如果它是链中的最后一个,将交给实际的资源。)类似的,在响应到达客户之前,每个过滤器以相反的顺序对响应处理。

、附加练习实现一个查询天气的 web 程序;

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

Weather forecast.html

 五、心得体会:

能够理解 Servlet 的应用,并掌握 Servlet 的编程技术,以及熟练使用 Eclipse 开发 Servlet 应用;而且能够熟悉了解过滤器的作用,并掌握过滤器的开发与部署的步骤和了解过滤器链。


推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文详细介绍了PHP中与URL处理相关的三个函数:http_build_query、parse_str和查询字符串的解析。通过示例和语法说明,讲解了这些函数的使用方法和作用,帮助读者更好地理解和应用。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 安卓select模态框样式改变_微软Office风格的多端(Web、安卓、iOS)组件库——Fabric UI...
    介绍FabricUI是微软开源的一套Office风格的多端组件库,共有三套针对性的组件,分别适用于web、android以及iOS,Fab ... [详细]
author-avatar
悦md悦小坏蛋
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有