javaweb实验:Servlet应用开发

news/2024/11/23 3:23:08/

目录

  • 前言
  • 实验目的
  • 实验内容
  • 实验原理或流程图
  • 实验过程
    • 一个简单的servlet
      • Servlet
      • 表单
      • 结果展示
    • 使用servlet处理表单请求
      • servlet
      • 结果展示
    • 在Servlet中获取应用程序配置参数
      • servlet
    • 使用Servlet处理用户登录请求
      • Servlet
      • 登录表单
      • 登陆成功页面
      • 登录失败页面
      • 结果展示![在这里插入图片描述](https://img-blog.csdnimg.cn/2deecf549f224b729a42ed6251b08c70.png)
    • 配置web.xml
  • 总结

前言

本实验的目的是掌握Servlet的基本概念和编程技巧,了解Servlet的生命周期和工作原理,学习如何使用Servlet处理客户端的请求和响应,以及如何在Servlet中使用JavaBean、Session、Cookie等技术实现数据的存取和传递。

本实验分为四个部分:

第一部分:创建一个简单的Servlet程序,了解Servlet的配置和运行方式,以及如何在Servlet中获取请求参数和输出响应内容。

第二部分:使用Servlet处理表单请求

第三部分:在Servlet中获取应用程序配置参数,并在页面上显示结果。

第四部分:使用Servlet处理用户登录请求,根据登录验证结果,分别跳转至登录成功页面和登录失败页面。

实验目的

  1. 学会 Servlet的创建、配置及运行方法;
  2. 学会使用Servlet获取表单数据;
  3. 学会配置和获取应用初始化参数的方法;
  4. 学会使用Servlet的跳转方法实现客户端跳转和服务器端跳转。

实验内容

(一)编写和运行一个简单的Servlet,向浏览器窗口(页面)输出如下内容:“Welcome to China!”、“热情好客的中国欢迎您!”和系统当前时间。输出效果如图所示
在这里插入图片描述
(二)使用Servlet处理表单请求

(三)在Servlet中获取应用程序配置参数。

(四)使用Servlet处理用户登录请求,根据登录验证结果,分别跳转至登录成功页面和登录失败页面。

实验原理或流程图

Servlet是运行在服务器端的Java程序,它主要是为了扩展服务器的功能。编写和运行Servlet一般要经过4个步骤:(1)编辑源文件,它是继承HttpServlet的Java类;(2)编译源文件;(3)在服务器中部署该Servlet,即将类文件存放到服务器的适当目录中,并修改web.xml部署描述文件;(4)使用浏览器访问该Servlet程序。
Servlet程序的生命周期包括:加载程序、初始化、服务、销毁、卸载五个阶段。Servlet程序的生命周期中最为重要的就是service()方法,doGet()和doPost()是专门负责处理Http请求的。
Servlet与JSP的联系与区别:JSP是一种服务器端的动态页面技术,它的实质也是Servlet。它的编写较Servlet容易。二者的主要区别是:Servlet通常是实现业务逻辑,而JSP通常实现表示逻辑。
Servlet本身存在HttpServletRequest和HttpServletResponse对象的声明,可以使用Servlet接收用户提交的内容。
可以通过表单或超链接从一个JSP或者是一个HTML页面跳转进Servlet,也可以从Servlet跳转到其他的Servlet、JSP或其他页面,采用跳转形式有两种:(1)使用HttpServletResponse接口的sendRedirect()方法实现的客户端跳转;(2)使用RequestDispatcher接口的forward()方法实现的服务器端跳转。

实验过程

一个简单的servlet

Servlet

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.IOException;
import java.io.PrintWriter;
import java.util.Date;@WebServlet("/hello")
public class HelloServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setCharacterEncoding("utf-8");response.setContentType("text/html");PrintWriter writer = response.getWriter();writer.write("Welcome to China!<br>热情好客的中国欢迎您!<br><br>当前时间:" + new Date());}
}

表单

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>index</title>
</head>
<body>
<a href="HelloServlet">xianshj</a>
</body>
</html>

结果展示

在这里插入图片描述

使用servlet处理表单请求

servlet

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.IOException;
import java.io.PrintWriter;@WebServlet("/input")
public class InputServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setCharacterEncoding("utf-8");response.setContentType("text/html");PrintWriter writer = response.getWriter();writer.write("<h1>用户名:" + request.getParameter("name") + "<br>密 码:" + request.getParameter("password") + "<h1>");}
}

结果展示

在这里插入图片描述
在这里插入图片描述

在Servlet中获取应用程序配置参数

servlet

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;public class InitParamServlet extends HttpServlet {String nuc_url = "";@Overridepublic void init(ServletConfig config) throws ServletException {nuc_url = config.getInitParameter("nuc_url");}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setCharacterEncoding("utf-8");response.setContentType("text/html");PrintWriter writer = response.getWriter();writer.write(nuc_url);}
}

使用Servlet处理用户登录请求

Servlet

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.IOException;@WebServlet("/login")
public class LoginServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String myName = "luyunchi";String myPassword = "123123";String name = request.getParameter("name");String password = request.getParameter("password");if (name.equals(myName) && password.equals(myPassword)) {request.setAttribute("name", name);request.getRequestDispatcher("/login_success.jsp").forward(request,response);} else {request.getRequestDispatcher("/login_failure.jsp").forward(request,response);}}
}

登录表单

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登录页面</title>
</head>
<body><center><h1>用户登录</h1></center><hr><br><form action="${pageContext.request.contextPath}/login" method="get"><table align="center" border="0"><tr><td align="right">用户名:</td><td><input type="text" name="name"></td></tr><tr><td align="right">密 码:</td><td><input type="password" name="password"></td></tr><tr><td colspan="2" align="center"><input type="submit" value="提交">&nbsp;<input type="reset" value="重置"></td></tr></table></form>
</body>
</html>

登陆成功页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登录成功页面</title>
</head>
<body><center><h1>恭喜,您登录成功!</h1><br><br><h1>欢迎<%=request.getAttribute("name")%>光临!</h1></center>
</body>
</html>

登录失败页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登录失败页面</title>
</head>
<body><center><h1>用户ID或密码错误!请重新<a href="${pageContext.request.contextPath}/login_6_4.jsp">登录</a> </h1></center>
</body>
</html>

结果展示在这里插入图片描述

在这里插入图片描述

配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file></welcome-file-list><servlet><servlet-name>ServletDemo</servlet-name><servlet-class>demoSeverlet.HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>ServletDemo</servlet-name><url-pattern>/HelloServlet</url-pattern></servlet-mapping><servlet><servlet-name>ServletDemo1</servlet-name><servlet-class>demoSeverlet.InputServlet</servlet-class></servlet><servlet-mapping><servlet-name>ServletDemo1</servlet-name><url-pattern>/InputServlet</url-pattern></servlet-mapping><servlet><servlet-name>ServletDemo2</servlet-name><servlet-class>demoSeverlet.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>ServletDemo2</servlet-name><url-pattern>/LoginServlet</url-pattern></servlet-mapping><servlet><servlet-name>ServletDemo3</servlet-name><servlet-class>demoSeverlet.InitParamServlet</servlet-class></servlet><servlet-mapping><servlet-name>ServletDemo3</servlet-name><url-pattern>/InitParamServlet</url-pattern></servlet-mapping>
</web-app>

总结

本文是对javaweb实验中Servlet应用开发的总结,主要介绍了Servlet的概念、功能、生命周期和编程步骤。Servlet是一种运行在服务器端的Java程序,它可以接收和响应客户端的请求,实现动态的Web内容生成。Servlet的功能包括:处理表单数据、管理会话状态、与数据库交互、实现过滤器和监听器等。Servlet的生命周期由容器管理,一般分为三个阶段:初始化、服务和销毁。Servlet的编程步骤主要有:创建Servlet类,实现init、service和destroy方法;配置web.xml文件,注册Servlet和映射URL;部署和运行Servlet应用,测试其功能。


http://www.ppmy.cn/news/82688.html

相关文章

mjpg-streamer框架分析

mjpg-streamer框架分析 文章目录 mjpg-streamer框架分析框架maininput_initinput_runoutput_init 框架 main 这个函数是一个C程序的主函数&#xff0c;接受命令行参数并执行相应的操作。下面是这个函数的要点&#xff1a; 定义了一些变量&#xff0c;包括输入插件数组input、输…

面试题集合1

zstarling DELETE和TRUNCATE TABLE的区别和联系过拟合如何解决介绍数据标准化方法&#xff0c;并介绍每个方法的特点&#xff0c;为什么要都标准化&#xff0c;优点是什么&#xff0c;以及什么样的场是下用。流量运营过程中&#xff0c;常用的分析方法有哪些&#xff0c;对应的…

【谷粒商城笔记】1.基于docker的mysql、redis环境配置

0.系统 宝塔 v7.5.1 Centos v8.2 1. 安装Docker 直接yum install docker会提示找不到 > docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine Loaded plugins: fastestmirror No Match for argument: …

Android 12.0下拉状态栏通知栏的通知设置默认展开

1.概述 在12.0的产品定制化中,对于SystemUI的定制也是常用的功能,而在下拉状态栏中的通知栏部分也是极其重要的部分,每条通知实时更新在通知栏部分,由于通知栏高度的限制,每条通知是默认收缩的,功能开发需要要求通知默认展开,所以就要从通知的加载流程分析 如图: 2.…

程序员必须避免的坑:编程陷阱与最佳实践

摘要&#xff1a;作为一位资深程序员&#xff0c;我们在编程过程中可能会遇到各种各样的陷阱。本文将详细讨论程序员在编程过程中应避免的一些常见陷阱&#xff0c;并提供相应的最佳实践&#xff0c;以帮助您提高编程效率和代码质量。 正文&#xff1a; 一、代码规范与可读性 …

国际原油如何投资?国际原油期货投资策略有哪些?

国际原油产品的规模比较大&#xff0c;市场的交易环境是非常安全的&#xff0c;相信很多人都对国际原油产品的投资比较感兴趣&#xff0c;但是个人投资者需要注意&#xff1a;要买卖实体原油几乎是不可能的&#xff0c;投资者参与国际原油投资最方便快速的方式&#xff0c;就是…

电脑E盘被不小心格式化了?别急,介绍三种数据恢复方法

电脑E盘格式化后如何恢复数据&#xff1f;意外的电脑E盘格式化或许是每个人都遇到过的问题。然而&#xff0c;当您发现您的重要数据已经丢失时&#xff0c;您可能会感到沮丧甚至绝望。但请不要担心。在本文中&#xff0c;我们将介绍一些有助于您找回数据的方法&#xff0c;希望…

Rust每日一练(Leetday0007) 删除结点、有效括号、合并链表

目录 19. 删除链表的倒数第 N 个结点 Remove-nth-node-from-end-of-list &#x1f31f;&#x1f31f; 20. 有效的括号 Valid Parentheses &#x1f31f; 21. 合并两个有序链表 Mmerge-two-sorted-lists &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Ru…