jsp,servlet类画圆的实现,题目如下:

12.编写inputCircle. jsp,页面提供form表单,该form表单提供两个text 文本框,用用户输人圆的圆心(例如(12,34))和圆的半径,用户单击submit提交键请求名drawCircle的servlet.编写创建servlet的Servler类,该类创建的servlet可以绘制圆。

一、使用form表单实现inputCircle的jsp页面:

inputCircle. jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>inputCircle</title>
</head>
<body>
<form action="drawCircle" method="post" id=textStyle>
请输入圆心位置:
<input type="text" id=textStyle name="yuanxing" value="(250,250)" >
(格式用xx,xx)
<br>请输入圆的半径:
<input type="text" id=textStyle name="banjing" value="200">
<br>
<input type="submit" id=textStyle value="提交">

</form>
</body>
</html>

1.提交的名称写类的名字,提交方式使用get和post都行

<form action="drawCircle" method="post" id=textStyle>

2.记住自己取的名字,后面用的上,并且设置初始值,使用的时候就不用再打

<input type="text" id=textStyle name="yuanxing" value="(250,250)" >   
(格式用xx,xx)
<br>请输入圆的半径:
<input type="text" id=textStyle name="banjing" value="200">
<br>
<input type="submit" id=textStyle value="提交">

二、在Java Resource下的src中创建包 名为:moon.sun;包下创建drawCircle的servlet类 

 

 drawCircle.java

package moon.sun;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class drawCircle
 */
@WebServlet("/drawCircle")
public class drawCircle extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
    /**
     * @see HttpServlet#HttpServlet()
     */
    public drawCircle() {
        super();
        // TODO Auto-generated constructor stub
    }
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("image/jpeg");
    	String yuanxing=request.getParameter("yuanxing");
    	String banjing=request.getParameter("banjing");
    	if(yuanxing == null||yuanxing.length()==0 ||banjing == null||banjing.length()==0){
            response.sendRedirect("inputCircle.jsp");//重定向到输入数据页面。
            return;
        }  
    	
    	 int i=0;
    	 Pattern pattern;          //模式对象。
         Matcher matcher;          //匹配对象。
         String regex="-?[0-9][0-9]*[.]?[0-9]*" ;//匹配整数的正则表达式。
         pattern = Pattern.compile(regex);  //初试化模式对象。
         matcher = pattern.matcher(yuanxing);  //初始化匹配对象,用于检索input。
         String[] Number=new String[2];
         while(matcher.find()) {
             String str = matcher.group(); 
             Number[i]=str;
             i++;  
          } 
    	double x=Double.parseDouble(Number[0]);
    	double y=Double.parseDouble(Number[1]);
    	Double r=Double.parseDouble(banjing);
    	draw(r,x,y,response);
	}
    		
	void draw(double r,double x,double y,HttpServletResponse response){
		 int width=800, height=600;
	        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; 
	        Ellipse2D ellipse=new  Ellipse2D.Double(x-r,y-r,2*r,2*r);
	        g_2d.setColor(Color.blue);
	        g_2d.draw(ellipse); 
	        try{
	        	OutputStream outClient = response.getOutputStream();
	        	boolean boo =ImageIO.write(image, "jpeg", outClient);
	        }
	        	catch(Exception exp){}	        
	}
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
}

1.直接在eclipse新建servlet类,勾选doget与dopost方法,方法写在get与post里面都行因为他们互相调用

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

 2.代码大概可以分为三部分一是初始化对象,与jsp页面建立联系;二是使用正则表达式与数组将圆心位置赋予给x,y;三就是画圆方法

初始化对象,判断是否为空

response.setContentType("image/jpeg");
    	String yuanxing=request.getParameter("yuanxing");
    	String banjing=request.getParameter("banjing");
    	if(yuanxing == null||yuanxing.length()==0 ||banjing == null||banjing.length()==0){
            response.sendRedirect("inputCircle.jsp");//重定向到输入数据页面。
            return;
        }  

 赋予给x,y

int i=0;
    	 Pattern pattern;          //模式对象。
         Matcher matcher;          //匹配对象。
         String regex="-?[0-9][0-9]*[.]?[0-9]*" ;//匹配整数的正则表达式。
         pattern = Pattern.compile(regex);  //初试化模式对象。
         matcher = pattern.matcher(yuanxing);  //初始化匹配对象,用于检索input。
         String[] Number=new String[2];
         while(matcher.find()) {
             String str = matcher.group(); 
             Number[i]=str;
             i++;  
          } 
    	double x=Double.parseDouble(Number[0]);
    	double y=Double.parseDouble(Number[1]);
    	Double r=Double.parseDouble(banjing);
    	draw(r,x,y,response);

画圆的方法与dopost方法是同等的,它独立出来

void draw(double r,double x,double y,HttpServletResponse response){
		 int width=800, height=600;
	        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; 
	        Ellipse2D ellipse=new  Ellipse2D.Double(x-r,y-r,2*r,2*r);
	        g_2d.setColor(Color.blue);
	        g_2d.draw(ellipse); 
	        try{
	        	OutputStream outClient = response.getOutputStream();
	        	boolean boo =ImageIO.write(image, "jpeg", outClient);
	        }
	        	catch(Exception exp){}	        
	}

实现的效果图

 

 

到这里就结束了,有问题可以在评论区问我,但我不一定会,大家一起讨论学习,如果这篇对你用,请点个赞,谢谢!

  • 32
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醉游星河

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值