Eswink Eswink
  • 首页
  • 网站公告
  • 红蓝对抗
    • 攻防对抗
    • 渗透分析
  • 资源分享
    • 代码发布
    • 其他分享
  • 本站专题
    • 视频集锦
    • WordPress
    • 工程实践
    • 奇闻趣事
    • 活动线报
  • 问答
  • 绿标域名
  • 关于本站
    • 友情链接
  • 注册
    登录
现在登录。
  • 首页
  • 网站公告
  • 红蓝对抗
    • 攻防对抗
    • 渗透分析
  • 资源分享
    • 代码发布
    • 其他分享
  • 本站专题
    • 视频集锦
    • WordPress
    • 工程实践
    • 奇闻趣事
    • 活动线报
  • 问答
  • 绿标域名
  • 关于本站
    • 友情链接
首页 代码发布 Java企业级应用开发(J2EE)_实验四Servlet编程

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

小伍同学 2022-04-30 14:41:26 本文共4483个字,预计阅读时间需要12分钟
1 星2 星3 星4 星5 星 (已有2 点评, 平均得分: 4.00)您还未点评
Loading...

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

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

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编程图片1
登录页面
Java企业级应用开发(J2EE)_实验四Servlet编程图片2
登录成功
Java企业级应用开发(J2EE)_实验四Servlet编程图片3
登录失败

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

  • 无法访问Servlet,返回404
    • 在对应的Java文件中添加@WebServlet(name = "*", value = "*")
  • doGet方法时,页面乱码
    • 添加ContentType即:resp.setContentType("text/html;charset=utf-8");即可解决
  • getRequestDispatcher时无法获取正确的路径
    • 添加”/”或者使用绝对路径
#java#JSP#Servlet#工程实践
0
小伍同学
一个即将入土的程序猿
赞赏
小伍同学
评论 (0)
返回
    发表评论
猜你喜欢
  • 巧妙应用Docker运行HuggingFace
  • 如何利用GO中的泛型实现客户端分页API
  • 通用网盘下载链接检测_Serverless云函数应用
  • SpringCloud分布式组件之玩转Nacos
  • 页面优化:使用JS脚本实现页面链接预加载
小伍同学
一个即将入土的程序猿
130
文章
60
评论
169
获赞
小伍同学
15 2月, 2022
关于Windows环境下Payloads总结
Copyright © 2020-2022 Eswink. Designed by nicetheme. 川公网安备 51012202000979号 | 蜀ICP备20002650号-6
当前线路为: 国内线路
本站已安全运行:
本站由酷盾安全提供高防CDN国际线路安全防护服务
友链: Eswink 信息笔记 网站目录 站长新动力 脚本挂机引流赚钱 勇康博客网 龙笑天下 HTTP代理 QYV企业商务咨询 镇北府博客 吾爱漏洞 祭夜の咖啡馆 杭州论坛 龙鳞收录网 KIENG博客 Hackyh‘Blog
在线客服
小伍同学
我们将会在24小时内回复您,如果有急事请联系QQ或者微信
12:01
您好,有任何疑问请与我们联系!
公众号

选择聊天工具: