Java Servlet基础 
一.实验目的
实验1  绘制多边形
掌握在JSP页面中,使用form表格请求servlet绘制图形。
实验2  双球福利
掌握在JSP页面中请求servlet处理数据。
二.实验内容与要求
实验1  绘制多边形
(1)编写inputvertex.jsp,该页面提供一个form表单,该form表单体提供一个textArea输入区,用于用户输入多边形的顶点(例如(12,34)(5,10)(100,89)),用户单击submit提交键请求名字是drawPolygon的servlet。
(2)编写创建servlet的Servlet类,该类创建的servlet可以绘制多边形。
(3)JSP页面giveText.jsp负责显示backWords. tag返回给它的单词。
(4)在Tomcat 服务器的webapps目录下(比如,D:\apache-tomcat-9.0.26\webapps)新建一个名字是ch6_ practice_one 的 Web服务目录。把 jsp页面保存到ch6_practice_one目录中。在ch6_practice_one目录下建立子目录WEB-INF(字母大写),然后在WEB-INF目录下再建立子目录classes,将创建servlet的类的Java源文件按照报名保存到classes的相应子目录中。
(5)向ch6_practice_one\WEB\INF下的部署文件l添加servlet和servlet-mapping标记,部署的servlet的名字是drawPolygon,访问servlet的url-pattern是/drawPolygon。
(6)用浏览器访问 JSP 页面 inputVertex.jsp。
实验2  双球福利
(1)编写buyLottery.jsp,用户在该页面输入双球的6个红球和一个蓝球的号码,代表用户购买的,然后单击form表单的提交键,请求名字是lottery的servlet。
(2)编写创建servlet的Servlet类,该类创建的servlet可以判断用户的中奖情况。
(3)在Tomcat服务器的webapps目录下(比如,D:\apache-tomcat-9.0.26\webapps)新建一个名字是ch6_practice_two 的Web服务目录。把jsp页面都保存到 ch6_practice_two目录中。在ch6_practice_two目录下建立子目录WEB-INF(字母大写),然后在WEB-INF目录下再建立子目录classes,将创建servlet的类的Java源文件按照报名保存到classes的相应子目录中。
(4)向ch6_practice_two\WEB\INF下的部署文件l添加servlet和servlet-mapping标记,部署的servlet的名字是lottery,访问servlet的url-pattern是/lottery。
(5)用浏览器访问 JSP 页面 buyLottery.jsp。
三.实验代码与结果
实验1  绘制多边形
inputVertex.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<style>
    #tom{
        font-family:宋体;font-size:26px;color:blue
    }
</style>
<%
    String s ="(20,220)(220,20)(420,220)(220,420)";
%>
<HTML><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>
DrawPolygon_Servlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.awt.image.BufferedImage;
import java.awt.*;
import Pattern;
import Matcher;
import *;
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 = Parameter("polygonVertex");
        if(polygonVertex == null||polygonVertex.length()==0){
            response.sendRedirect("inputVertex.jsp");//重定向到输入数据页面。
            return;
        }
        response.setContentType("image/jpeg");
        Polygon  polygon = getPolygon(polygonVertex);
        BufferedImage image = getImage(polygon);
        OutputStream outClient= OutputStream();
        boolean boo =ImageIO.write(image,"jpeg",outClient);
    }
    Polygon getPolygon(String polygonVertex){ //得到多边形。
        Polygon polygon = new Polygon();
        Pattern pattern;            //模式对象。
        Matcher matcher;            //匹配对象。
        String regex="(\\d+[,, ]+\\d+)" ;//匹配顶点的正则表达式。
        pattern = Patternpile(regex);  //初试化模式对象。
        matcher = pattern.matcher(polygonVertex);  //用于检索polygonVertex。
        while(matcher.find()) {
            String str = up();
            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 =
java和jsp                new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
        Graphics g = Graphics();
        g.fillRect(0, 0, width, height);
        Graphics2D g_2d=(Graphics2D)g;
        g_2d.setColor(Color.blue);
        g_2d.draw(shape);
        return image;
    }
}
效果:
图1
图2
实验2  双球福利
buyLottery.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<style>
    #red{
        font-family:宋体;font-size:26px;color:red
    }
</style>
<style>
    #blue{

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。