一·新建动态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· 创建测试网页![在这里插入图片描述](https://img-blog.csdnimg.cn/20201005231831133.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NDAwNzIz,size_16,color_FFFFFF,t_70#pic_center)
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
完成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的收到了
五·开启业务逻辑包
1·
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();
}
}
五·结果测试
点击“质数查找”:
成功!