jsp 实验12 servlet

一、实验目的

掌握怎样在JSP中使用javabean

二、实验项目内容(实验题目)

编写代码,掌握servlet的用法。【参考课本 上机实验1 】

三、源代码以及执行结果截图:

源代碼:

inputVertex.jsp:

<%@ page language="java" contentType="text/html; uft-8"

    pageEncoding="utf-8"%>

<style>

   #tom{

    font-family:宋体;font-size:26;color:blue

   }

</style>

<%

String s ="(20,220)(220,20)(420,220)(220,420)";

%>

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>Insert title here</title>

</head>

<body bgcolor=#ffccff>

<p id=tom>

<form action="drawPolygon" id= tom method=post>

输入多边形的顶点,格式是(m,n<br>m,n为整数 0<=m<=800,0<=n<=600<br>

<textArea name="polygonVertex" id =tom rows=5 cols=30 >

<%= s %>

</textArea>

<br><input type=submit id=tom value="提交"/>

</form>

</p>

</body>

</html>

web.xml:

<?xml version="1.0" encoding="UTF-8"?>

<web-app>

   <servlet>

       <servlet-name>drawPolygon</servlet-name>

       <servlet-class>moon.sun.DrawPolygon_Servlet</servlet-class>

   </servlet>

   <servlet-mapping>

        <servlet-name>drawPolygon</servlet-name>

        <url-pattern>/drawPolygon</url-pattern>

   </servlet-mapping>

</web-app>

DrawPolygon_Servlet:

package moon.sun;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import java.awt.image.BufferedImage;

import java.awt.*;

import java.util.regex.Pattern;

import java.util.regex.Matcher;

import java.awt.geom.*;

import javax.imageio.ImageIO;

public class DrawPolygon_Servlet extends HttpServlet{

                    HttpServletRequest request;

                    HttpServletResponse response;

                    public void init(ServletConfig config) throws ServletException{

                       super.init(config);

                    }

                    public void service(HttpServletRequest request,HttpServletResponse response)

                             throws IOException{

                       request.setCharacterEncoding("utf-8");

                       String polygonVertex = request.getParameter("polygonVertex");

                       if(polygonVertex == null||polygonVertex.length()==0){

                           response.sendRedirect("ch6_1.jsp");

                           return;

                       }

                       response.setContentType("image/jpeg");

                       Polygon  polygon = getPolygon(polygonVertex);

                       BufferedImage image = getImage(polygon);

                       OutputStream outClient= response.getOutputStream();

                       boolean boo =ImageIO.write(image,"jpeg",outClient);

                    }

                    Polygon getPolygon(String polygonVertex){

                       Polygon polygon = new Polygon();

                       Pattern pattern;

                       Matcher matcher;

                       String regex="(\\d+[,, ]+\\d+)" ;

                       pattern = Pattern.compile(regex);

                       matcher = pattern.matcher(polygonVertex);

                       while(matcher.find()) {

                          String str = matcher.group();

                          String []vertex = str.split("[( ),, ]+");

                          polygon.addPoint(Integer.parseInt(vertex[0]),Integer.parseInt(vertex[1]));

                       }

                       return polygon;

                    }

                    BufferedImage getImage(Shape shape){

                         int width=1000, height=800;

                         BufferedImage image =

                         new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);

                         Graphics g = image.getGraphics();

                         g.fillRect(0, 0, width, height);

                         Graphics2D g_2d=(Graphics2D)g;

                         g_2d.setColor(Color.blue);

                         g_2d.draw(shape);

                         return image;

                    }

}

代碼結果圖:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/9376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MacOS下载安装JDK8

一、前言 今天给苹果电脑安装JDK环境&#xff0c;后续打算把Mac系统也用起来&#xff0c;也体验一把用苹果系统开发。 JDK就不过多介绍了&#xff0c;大家都是JAVA开发&#xff0c;JDK就是JAVA开发的必要环境。目前已经更新到JDK20了&#xff0c;不过我是不会更新的&#xff0…

关于ARINC653的疑问

1. 如何理解existing process? 在ARINC653的中多次出现existing process&#xff0c;但没有明确的定义。 从existing process的上下文来看&#xff0c;它可能是&#xff1a; - 已经create但尚未start的进程 - 已经start但分区mode尚未是normal的进程 - 分区mode是n…

React Suspense与Concurrent Mode:探索异步渲染的新范式

React的Suspense和Concurrent Mode是两个强大的特性&#xff0c;它们共同改变了React应用处理异步数据加载和UI渲染的方式。下面我将通过一个简化的代码示例来展示如何使用这两个特性。 Concurrent Mode 和 Suspense 的基本用法 首先&#xff0c;确保你使用的是支持这些特性的…

Linux|了解如何使用 awk 内置变量

引言 当我们揭开 Awk 功能部分时&#xff0c;我们将介绍 Awk 中内置变量的概念。您可以在 Awk 中使用两种类型的变量&#xff1a;用户定义的变量和内置变量。 内置变量的值已经在 Awk 中定义&#xff0c;但我们也可以仔细更改这些值&#xff0c;内置变量包括&#xff1a; FILEN…

LeNet-5上手敲代码

LeNet-5 LeNet-5由Yann LeCun在1998年提出&#xff0c;旨在解决手写数字识别问题&#xff0c;被认为是卷积神经网络的开创性工作之一。该网络是第一个被广泛应用于数字图像识别的神经网络之一&#xff0c;也是深度学习领域的里程碑之一。 LeNet-5的整体架构&#xff1a; 总体…

免费思维13招之四:主副型思维

免费思维13招之四:主副型思维 本节,给你分享一下产品型思维的第二种子思维:主副型思维 什么是主副型思维呢?传统的主副型思维是指对企业的核心、利润最高的产品进行收费,一些附加品、延伸产品进行让利,赠送给客户。 但是这早已过时了,现在升级之后的产品型思维,就是将…

C++并发:线程函数传参(二)

正文 传参中的陷阱 1. 向std::thread 构造函数传参&#xff1a;所有参数&#xff08;含第1个参数可调用对象&#xff09;均按值并以副本的形式保存在 std::thread 对象中的tuple里。这一点的实现类似于std::bind。如果要达到按引用传参的效果&#xff0c;可使用std::ref来传递…

VisualGDB:Linux静态库项目创建、编译及库的使用

接上篇《VisualGDB&#xff1a;Linux动态库项目创建、编译及库的使用》&#xff0c;静态库的创建和使用与动态库基本无差别&#xff0c;唯一需要做的就是指定项目生成静态库。 一、指定项目生成静态库 二、重新构建和编译项目 这里注意&#xff0c;同样要copy一个libxxx.so格式…

Linux 无名信号量(Semaphore)的使用

目录 一、无名信号量的概念二、无名信号量相关函数三、信号量的使用步骤四、应用场景五、测试代码 一、无名信号量的概念 Linux无名信号量&#xff08;Semaphore&#xff09;   在Linux操作系统中&#xff0c;信号量&#xff08;Semaphore&#xff09;是一种用于进程间或线程…

内网穿透速度慢

内网穿透速度慢原因及优化策略 在计算机网络应用中&#xff0c;内网穿透是一个常见的需求&#xff0c;它允许外部网络访问位于内部网络&#xff08;如企业局域网或家庭网络&#xff09;中的设备或服务。然而&#xff0c;有时用户在进行内网穿透时会遇到速度慢的问题&#xff0…

AI视频教程下载:给企业管理层和商业精英的ChatGpt课程

课程内容大纲&#xff1a; 1-引言 2-面向初学者的生成性人工智能 3-与ChatGPT一起学习提示101 详细介绍了如何使用ChatGPT的六种沟通模式&#xff0c;并提供了各种实际应用场景和示例&#xff1a; **Q&A模式&#xff08;问题与答案模式&#xff09;**&#xff1a; - 这…

打印机处于脱机状态如何恢复到正常状态?最简单!

当打印机一直处于脱机状态但打印机重启了好几遍仍然无效果时&#xff0c;尝试以下方法或许会成功&#xff01; 1.打开设置&#xff0c;在主页界面会有它的推荐设置&#xff0c;如上图&#xff0c;此时只需要点击“打印机和扫描仪”这个方框即可 2.但也并不是每次都会有推荐设置…

从零开始!学习绘制3D表情的详细指南

在2020 年的苹果全球开发者大会(WWDC)&#xff0c;苹果发布了新的 macOS 11(又名 Big Sur)。其中在UI视觉方面macOS Big Sur 系统最大的变化就是图标上&#xff0c; Big Sur更新了很多新设计风格的 3D应用图标&#xff0c;3D设计的确可以提升UI整体的视觉氛围&#xff0c;并且现…

docker自定义网桥和容器的网络IP段

生产环境中服务器IP基本都是内网ip&#xff0c;有时会和docker网桥以及容器的ip段产生冲突&#xff0c;导致无法访问应用的情况&#xff0c;要避免这种情况可以自己自定义docker的网桥和容器使用的ip段。 需要在docker配置文件中添加配置&#xff0c;编辑文件&#xff1a;vi /e…

【linux软件基础知识】std::lock_guard 和 std::unique_lock的区别

std::lock_guard 和 std::unique_lock 是两个 C++ 标准库类,它们为锁定和管理互斥体提供不同级别的灵活性和功能。 std::lock_guard 是一个简单的包装类,它提供互斥体上的作用域锁。 它获取构造锁并在超出范围时自动释放它。 std::lock_guard 专为需要锁定块或函数的整个范围…

【linux软件基础知识】文件的概念:文件控制块(FCB)

文件控制块(FCB) 在文件系统中,文件控制块(FCB)或文件头是与每个文件关联的数据结构。 它包含有关文件的各种属性和元数据,允许操作系统和文件系统管理和检索有关文件的信息。 FCB 中存储的具体属性可能会根据文件系统实现的不同而有所不同,但通常包括: 文件名:文件…

C++ 容器(三)——Vector操作

一、vector定义 动态大小:vector可以根据需要动态增加或减少元素的数量,而不需要事先指定数组大小,这使得它非常灵活。随机访问:可以通过下标快速访问vector中的任何元素,时间复杂度为O(1)。内存管理:vector内部封装了动态内存管理的细节,可以自动扩展容量并释放不再需要…

wsl2安装rancher并导入和创建k8s集群

环境准备 安装wsl2点击此文]ubuntu20.04安装docker 点击此文,安装完成后docker镜像仓库改成阿里云镜像加速地址.如果不熟请点击此文 docker 安装rancher 启动wsl,根据官方文档以root身份执行 sudo docker run -d --restartunless-stopped -p 80:80 -p 443:443 --privileged …

《基于GNU-Radio和USRP的雷达通信系统的实现》文献阅读

文章目录 前言一、摘要二、引言三、联合系统实施1、基本原理2、实验方案 四、软件设置1、发射机2、接收机 五、实验结果1、实验设置2、波形3、室内外对比4、不同参数的结果 六、结论七、参考文献八、论文自取九、阅读收获 前言 本文记录《基于GNU-Radio和USRP的雷达通信系统的实…

典型相关分析模型评价的标准和代码

典型相关分析模型的评价标准主要包括以下几个方面&#xff1a; 1. **模型拟合度**&#xff1a;评估模型是否能够充分解释观察到的数据变异。通常使用相关系数或典型相关系数来衡量模型的拟合度。 2. **变量选择**&#xff1a;评估选择的变量是否能够有效地解释目标变量的变异…