Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 代码发布 › Java企业级应用开发(J2EE)_实验四Servlet编程

Java企业级应用开发(J2EE)_实验四Servlet编程

Eswlnk的头像
Eswlnk
2022-04-30 14:41:26
Java企业级应用开发(J2EE)_实验四Servlet编程-Eswlnk Blog
智能摘要 AI
本文是一份基于清华大学出版社《JSP实用教程》的J2EE实验报告,主要内容围绕Servlet编程展开。实验旨在掌握Servlet常用对象(如HttpServletRequest、HttpServletResponse等)的使用,并通过编写Servlet类实现简单的登录验证功能。具体步骤包括创建登录页面`login.jsp`、编写验证Servlet`DispatcherServlet.java`和欢迎Servlet`welcomeServlet.java`,并通过`RequestDispatcher`实现页面跳转。实验中还探讨了GET与POST请求的区别,并提供了常见问题及解决方案,如404错误、乱码问题及路径获取问题。最终通过测试验证了系统的正确性。

J2EE实验报告,Servlet编程实验,适用于「清华大学出版社」出版的的「JSP实用教程」,高等学校JAVA课程系列教材。JSP将java代码和特定的更改内容嵌入到静态页面中,以静态页面为模板,实现部分内容的动态生成。JSP引入了一个名为“JSP操作”的XML标记来调用内置函数。

Java企业级应用开发(J2EE)_实验四Servlet编程-Eswlnk Blog

1 实验目的

掌握编写Servlet常用对象,包括:HttpServletRequest、HttpServletResponse、RequestDispatche和ServletContext。

2 实验内容

编写servlet类,程序功能如下:

  • 用户在登录页面输入用户名和密码,点击登录按钮后,则请求servlet程序验证用户名和密码;
    • 如果用户名为admin且密码为12345,则执行welcomeServlet;否则,给用户输出提示信息:”对不起,username or password error!”,同时,返回到登录页面。
    • 使用RequestDispatche的forward和include方法实现。

3 实验步骤

在前面实验中已经创建并部署的Web项目FristTomcatProject中进行编程。

3.1 编写登陆页面login.jsp

3.2 编写servlet类DispatcherServlet.java

  • 使用RequestDispatche的forward和include方法实现DispatcherServlet类。DispatcherServlet接收登录页面的用户名和密码。
    • 如果用户名为admin且密码为12345,则使用forward方法重定向到welcomeServlet;
    • 如果用户名不是admin,则输出“Sorry,用户名或密码错误,请重新输入!”,并且使用include方法返回登录页面login.jsp.
  • 配置DispatcherServlet类。

3.3 编写servlet类welcomeServlet.java

  1. 该类在页面显示“Welcome, 用户名”的字符串,其中,“用户名”是login.jsp发送的用户名。
  2. 配置welcomeServlet类。

3.4 运行程序

  • 启动服务器,使用浏览器访问login.jsp
  • 输入用户名admin、密码12345。点击login按钮
  • 观察登录页面form使用get方法时,登录后浏览器地址的变化。
  • 再次使用浏览器访问login.jsp,输入不是admin的用户名。

3.5 修改login.jsp中form的方法为post

修改代码后,再重新测试程序,观察浏览器地址栏地址的变化。

4 源代码

4.1 login.jsp

//login.jsp
<%--
  Created by IntelliJ IDEA.
  User: 贰叁伍
  Date: 2022/4/26
  Time: 20:15
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="/environment/DispatcherServlet" method="post">
    <table>
    <tbody>
    <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 align="center" colspan="2">
            <input type="submit" value="登录">
            <input type="reset" value="重置">
        </td>
    </tr>
    </tbody>
    </table>
</form>
</body>
</html>

4.2 welcomeServlet.java

//welcomeServlet.java
package com.example.java;

import javax.servlet.RequestDispatcher;
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(name = "welcomeServlet", value = "/welcomeServlet")
public class welcomeServlet extends HttpServlet {

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        String name = request.getParameter("name");
        out.print("Welcome," + name + "用户登录");
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        String name = request.getParameter("name");
        out.print("Welcome," + name + "用户登录");
    }
}

4.3 DispatcherServlet.java

//DispatcherServlet.java
package com.example.java;

import javax.servlet.*;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "DispatcherServlet", value = "/DispatcherServlet")
public class DispatcherServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String name = req.getParameter("name");
        String password = req.getParameter("password");
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out = resp.getWriter();
        if(name.equals("admin") && password.equals("123456")){//比对用户名和密码 相符就跳转
            RequestDispatcher rd = req.getRequestDispatcher("/welcomeServlet");
            rd.forward(req, resp);
        }
        else
        {
            out.print("“Sorry,用户名或密码错误,请重新输入!");
            RequestDispatcher rd = req.getRequestDispatcher("/SecondTest/login.jsp");
            rd.include(req, resp);
        }


    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String name = req.getParameter("name");
        String password = req.getParameter("password");
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out = resp.getWriter();
        if(name.equals("admin") && password.equals("123456")){//比对用户名和密码 相符就跳转
            RequestDispatcher rd = req.getRequestDispatcher("/welcomeServlet");
            rd.forward(req, resp);
        }
        else
        {
            out.print("“Sorry,用户名或密码错误,请重新输入!");
            RequestDispatcher rd = req.getRequestDispatcher("/SecondTest/login.jsp");
            rd.include(req, resp);
        }
    }
}

5 测试结果

Java企业级应用开发(J2EE)_实验四Servlet编程-Eswlnk Blog
登录页面
Java企业级应用开发(J2EE)_实验四Servlet编程-Eswlnk Blog
登录成功
Java企业级应用开发(J2EE)_实验四Servlet编程-Eswlnk Blog
登录失败

6 实验中的问题及解决方案

  • 无法访问Servlet,返回404
    • 在对应的Java文件中添加@WebServlet(name = “*”, value = “*”)
  • doGet方法时,页面乱码
    • 添加ContentType即:resp.setContentType(“text/html;charset=utf-8”);即可解决
  • getRequestDispatcher时无法获取正确的路径
    • 添加”/”或者使用绝对路径
本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
javaJSPServlet工程实践
0
0
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
刷新百度小程序云缓存
上一篇
Hexo博客魔改友链页面_实现自定义提交与个性化设置
下一篇

评论 (0)

请登录以参与评论
现在登录
    发表评论

猜你喜欢

  • 「攻防对抗」利用 fastjson 原生反序列化与动态代理突破安全限制
  • 「日志记录」逆向必应翻译网页版API实现免费调用
  • 「代码分享」第三方平台VIP视频解析API接口
  • 「至臻原创」某系统网站登录功能监测
  • 「JAVA教程」Spring Boot 中使用 JSON Schema 来校验复杂JSON数据
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1108
文章
319
评论
679
获赞

随便看看

Go语言错误处理为什么更推荐使用pkg/errors 三方库?
2022-06-27 13:39:45
JAVA应该怎么调用类方法?
2023-03-03 15:47:13
「技术教程」如何在项目中使用一个自定义的npm模块 | 如何使用一个魔改后的npm模块
2024-03-29 12:22:08

文章目录

专题展示

WordPress53

工程实践37

热门标签

360 AI API CDN java linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2025 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 0.720 秒   |  SQL查询 46 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress142
  • 网络安全64
  • 漏洞52
  • 软件52
  • 安全48
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈