以Java EE实现“某范围的质数查找”(servlet)

一·新建动态Web工程

1·创建Web工程

在这里插入图片描述
在这里插入图片描述

2·第一次运行添加Java Web服务器

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3·一直点击Next到

在这里插入图片描述
勾选“生成web.xml”,整个程序的配置文件(部署描述符)

在构建Web工程的过程中,要指定Web工程生活的容器。我们指定在tomcat中,他就会被安装到Tomcat中执行。

4·会弹出“是否切换相关联的视图”

在这里插入图片描述
可以选择“no”,暂时不切换。

二·新建网页

与普通Java工程相比,Java Web多了与网页相关的WebContent和Tomcat的库
在这里插入图片描述

1·在WebContent下选择other

在这里插入图片描述

2·搜索,选择HTML

在这里插入图片描述

3·自定义网页名

在这里插入图片描述

4·点击Finish,完成创建

在这里插入图片描述

5· 创建测试网页在这里插入图片描述

6·将web工程运行在服务器上

在这里插入图片描述

在这里插入图片描述
点击next
在这里插入图片描述

点击Finish

7·服务器启动

在这里插入图片描述

8·将此处的网址加上test.html,放在浏览器上试一下

在这里插入图片描述
在这里插入图片描述

二·创建网页

1·新建HTML文件“search_Prime”

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击Finish

2·search_Prime内容如下

网页做结构,样式表做外观

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<style>

   h3{
     font-size:30px;
   }

   body{
     padding:30px;
     font-size:20px;
   }
   
   div{
     margin-bottom:10px;
   }
   
   input{
     padding:5px;
     color:blue;
     font-size:20px;
   }
   
   button{
     font-size:20px;
   }
   
</style>
<body>
	<!-- 标题 -->
   <h3>某范围质数查找器</h3>
   <!-- form: 表单 -->
   <form action="findPrime" method="post">
     <div>
       <span>开始范围:</span>
<!--        名字起识别作用 -->
       <input type="text" name="begin">
     </div>
     <div>
       <span>结束范围:</span>
       <input type="text" name="end">
     </div>  
     <button>质数查找</button>   
   </form>
</body>
</html>

3· 点击Run On Server即可得

在这里插入图片描述

三·网络世界与Java世界的对接器——servlet

1·添加包(包的命名是域名倒装)

在这里插入图片描述
这个包是根包

在这里插入图片描述

2·添加一个控制器(包)

在这里插入图片描述

3·将servlet放在包——edu.mju.demowork.controller中

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
next

4· 设置servlet的映射地址

将映射地址更名为findPrime

在这里插入图片描述
映射地址就是网页,以后访问这个地址就可以访问到这个servlet。实现访问一个网址就是访问一个Java类的某一个方法

选择默认选项
在这里插入图片描述
Finish

0:18:18
完成servlet创建

5·doGet/doPost

在这里插入图片描述

doGet:小数据,直接访问网址
doPost:大数据,点击按钮将按钮所在的表单的输入控件的值提交,即提交表单

6· 提交表单相关

在这里插入图片描述

<!-- 提交地址 -->
action="findPrime"
<!-- 提交方式:get/post -->
method="post"

7· 提交网址与servlet的对应

在这里插入图片描述
在Servlet的头部自动生成的注解,标明这个servlet对应的网址是“findPrime”。由Tomcat搞定。
修改doGet的内容为:
在这里插入图片描述

8·直接访问网址“http://localhost:8080/demowork/findPrime”验证doGat提交

在这里插入图片描述
如出现404:
404类似空指针异常,可能是服务器没有同步更新。解决方法:
在这里插入图片描述

在这里插入图片描述

重新发布

如果控制台还是没有反应,就重新部署:
在这里插入图片描述
服务器会重新启动。

9·访问网址“http://localhost:8080/demowork/search_Prime.html”,点击按钮验证doPost提交

在这里插入图片描述
点击“质数查找”
在这里插入图片描述

四· 流(request,response)——容器提供的服务

1· 流

在这里插入图片描述
在这里插入图片描述
一个是浏览器往servlet流动的流,包含了表单的提交参数。一个是servlet往浏览器流动的流。

2· 试取得网页返回的参数

得到的参数,返回值都是字符串,要装换为int

//得到的参数,返回值都是字符串,要装换为int
int begin = Integer.parseInt(request.getParameter("begin"));
int end = Integer.parseInt(request.getParameter("end"));

在这里插入图片描述
运行结果如下:
在这里插入图片描述
在这里插入图片描述
网页送到Java的收到了

五·开启业务逻辑包

在这里插入图片描述
在这里插入图片描述

2·在其下新建一个“数学服务类”接口

在这里插入图片描述
内容如下:

package edu.mju.demowork.service;

import java.util.List;

public interface MathService {
	List<Integer> findScopedPrimes(int begin,int end);//找到某个范围的质数
}

3· 新建“数学服务的实现类”,实现接口“MathService”

内容如下:

package edu.mju.demowork.service;

import java.util.ArrayList;
import java.util.List;

public class MathServiceImpl implements MathService {

	public List<Integer> findScopedPrimes(int begin, int end) {
		List<Integer> primeList = new ArrayList<>();  //泛型,说明了这个集合类型所能存放的类型
		
		for(int num=begin;num<=end;num++)
			if(isPrime(num)){ //如果是质数
			   primeList.add(num);
			}
						
		return primeList;
	}

	
	private boolean isPrime(int num){//判断一个数是不是质数,返回值是Boolen,疑问句,以驼峰命名
		
		if(num<=1) return false;
		if(num==2) return true;
		
		int top = (int)Math.sqrt(num);
		int i;
		for(i=2;i<=top;i++)
			if(num%i==0) break;
		
		return i==top+1;
		
	}
	
}

4· 在 下建立“test”包

在这里插入图片描述

5·建立“Tester”类

在这里插入图片描述
“Tester.java”内容如下:

/**
 * 
 */
package edu.mju.demowork.test;

import edu.mju.demowork.service.MathService;
import edu.mju.demowork.service.MathServiceImpl;

/**
 * @author 20159
 *
 */
public class Tester {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		MathService mathService = new MathServiceImpl();
	    
		System.out.println(mathService.findScopedPrimes(3, 100));

	}

}

试运行:
在这里插入图片描述
结果如下:
在这里插入图片描述

6·更新“FindPrimeServlet”

package edu.mju.demowork.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

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 edu.mju.demowork.service.MathService;
import edu.mju.demowork.service.MathServiceImpl;

/**
 * Servlet implementation class FindPrimeServlet
 */
@WebServlet("/findPrime")
public class FindPrimeServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public FindPrimeServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("servlet do get is here");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//		System.out.println("servlet do post is here");
		int begin = Integer.parseInt(request.getParameter("begin"));//得到的参数,返回值都是字符串,要装换为int
		int end = Integer.parseInt(request.getParameter("end"));
		
//		System.out.println(begin+","+end);	
		
		MathService mathService = new MathServiceImpl();//servlet找Java干活,承担翻译的工作
		List<Integer> primeList = mathService.findScopedPrimes(begin, end);
		
		//结果用response返回浏览器
		PrintWriter writer = response.getWriter();
		writer.println(primeList.toString());
		writer.flush();
		writer.close();
		
	}

}

五·结果测试

在这里插入图片描述
在这里插入图片描述
点击“质数查找”:
在这里插入图片描述
成功!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值