一、servlet的基本概念:
servlet是sun提供的一种动态web资源开发技术。本质上就是一段java小程序。可以将servlet加入到servlet容器中运行。
servlet容器:能够运行servlet的环境就叫做servlet容器。 — tomcat
web容器:能够运行web应用的环境就叫做web容器 — tomcat
servlet的基本运行方式:
servlet没有main()方法。它们受控于另一个java应用(例如tomcat),这个java应用称为sevlet容器,tomcat就是这样一个容器。通常我们把tomcat也叫做servlet容器。
servlet默认是以多线程模式执行的。
注:jsp是为了方便写html代码和java代码,它的本身其实还是servlet。
二、myelipse的配置:
1、选择工作空间:只要切换了工作空间,所有的配置全部清零。
2、配置jdk:
选择菜单栏windows–》preferences,选择标签java–》installed jres,界面如下:
上图中,可以看到,myeclise有自带的jdk,那我们还是使用自己安装的jdk吧,单击上图中的“add”按钮,弹出如下界面:
上图中,选择自己安装的jdk路径,然后finish,继续:
3、配置工作空间的编码:从此之后你创建的任何项目中的文本文件默认编码都是utf-8
选择菜单栏windows–preferences,选择标签general–》workspace,如下:
4、改字体:
三、使用myeclipse创建web工程:
1、myeclipse指定tomcat:
选择菜单栏window–》preferences,选择标签myeclipse–》servers–》tomcat,然后:
上图中,选择自己的tomcat目录,记得一定要选中红框部分的”enable”。
检查运行的jdk:
同时,我们关闭myeclipse自带tomcat:
2、myeclipse创建web项目:
上图中的context root url指的是外部访问的虚拟路径,点击finish,继续:
上图中,选择“no”即可。如果选择“yes”也行,就会用6.0来编译,而不是5.0。继续:
上图中,是让你从java视图切换成myeclipse视图,选择“yes”。
新建的工程,目录结构如下:
webtest:web工程的名称,该工程部署时,在webapps目录下就会有一个example的web应用
src目录:java程序的开发目录,该目录下编写的所有程序在部署时,会自动部署到example/web-inf/classes目录下。
webroot目录:webroot对应于web应用的根目录,该目录下的所有子目录和子文件在部署时,会原封不动的发布到web应用目录下。
如果需要修改这个web工程的对外访问路径context root,可以右键这个项目,选择properties,选择myeclipse–》web标签:
在上图红框部分进行需改就行了。
3、myeclipse发布web项目到tomcat下:
选择上图中的按钮(菜单栏下方),提示文字为:deploy project to server,弹出如下界面:
上图中,选择add,继续:
上图中,选择我们之前tomcat,就行了。
当然了,还有另外一种方式可以发布到tomcat,方法是:右键工程文件,效果如下:
项目一旦发布到tomcat,就会马上把项目的webroot目录copy到tomcat的webapps目录下,并把webroot重命名为项目名称,即webtest:
发布之后,如果想在网页上看效果,需要先运行tomcat:
然后在网址输入url就行了:
四、创建servlet的一般步骤:
servlet的框架组成:
servlet框架是由两个java包组成:javax.servlet和javax.servlet.http。servlet的框架的核心里javax.servlet.servlet接口,所有的servlet都必须实现这一接口。
步骤:
新建一个类实现sun公司定义的servlet接口
将写好的类配置到tomcat中的web应用的web.xml中(配置对外访问路径)
注1:为了理解过程,下面的方式一是新建一个class文件作为servlet,然后手动配置web.xml。其实,实际开发中,直接新建servlet文件(方式二),就能一步到位,web.xml会自动配置好。
注2:tomcat内置servlet的jar包。
1、方式一:新建class文件
(1)新建一个class文件myservlet.java,继承子类httpservlet:
myservlet.java:
package com.vae.servlet; import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; //一般实现一个servlet,只要继承httpservlet类即可 public class myservlet extends httpservlet { @override protected void doget(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception { // todo auto-generated method stub //super.doget(req, resp); //获取对客户端的输出流(out对象) printwriter out = resp.getwriter(); out.write(“”hello,servlet“”); } @override protected void dopost(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception { // todo auto-generated method stub //super.dopost(req, resp); } }
上方代码中,如果采用get请求,就可以重写doget方法。注意要注释掉第17行的代码(父类的方法)。
其实,dopost和doget方法其实是在servlet类的service()方法的内部中调用的。tomcat已经把14行的request和response这两个参数给new好了。
19行:printwriter是字符打印流,这个字符流的输出源针对的是页面(向客户端输出)。
(2)web.xml配置,配置servlet的对外访问路径(url):
既然这个servlet是由web容器启动的,那么就需要在web.xml中进行配置,这样的话,tomcat在启动的时候就会自动加载这个文件。
浏览器访问web端必须通过url,于是还需要在web.xml中 通过标签配置一个映射的路径,同样附上别名name和路径url。
打开web.xml,添加一些代码。
web.xml:
“1.0” encoding=“utf-8”?》 “2.5” xmlns=“http://java.sun.com/xml/ns/javaee” xmlns:xsi=“http://www.w3.org/2001/xmlschema-instance” xsi:schemalocation=“http://java.sun.com/xml/ns/javaee ”》 index.jsphelloservlet com.vae.servlet.myservlet helloservlet /hello
11至21行是我添加的代码。
12行至15行:web.xml配置。一个名称映射一个类,别名可以随便取,方便在整个web.xml中引用这个servlet(13行),但类名必须为之前定义的servlet,含包名(14行)。
18行至21行:url配置,让浏览器通过这个url访问web端。19行的name别名必须和13行一样,20行的”/hello”是我们设置的url路径。
其实就是根据20行的url找到13行的别名,进而找到14行的servlet类。
运行程序,效果如下:
注意一定要删除myservlet.java代码中继承父类的方法:super.doget(req, resp);、super.dopost(req, resp);(17行、27行),否则会出现如下错误的页面:
2、方式二:新建servlet文件
注:只有在myecipse视图下才能新建servlet文件,在java视图下是不行的。
我们来新建一个servlet文件:
上图中,myeclipse会自动给我们继承父类htpservlet,然后我们只需要复写doget和dopost方法就行了。点击next,继续:
myservlet.java代码如下:
package com.vae.servlet; import java.io.ioexception; import java.util.date; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; public class myservlet extends httpservlet { public void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { //显示当前时间 response.getwriter().write(“now time:” + new date().tolocalestring()); } public void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { doget(request, response); } }
在网页输入url,效果如下:
上图可以看到,同一个资源,在不同的时间、不同的人访问的时候,是不一样的,很显然servlet是动态web资源。
总结:完成了myeclipse及tomcat的配置,以及servlet的开发流程。
Intel宣布彻底退出Optane技术相关业务
虚拟现实技术助推超级工程建设 海洋工程数字仿真技术应用前景愈加广阔
PCB设计“幸运转盘”
电缆发热的原因_电缆发热的处理方法
基于AD9957的多波形雷达信号产生器实现方案
MyEclipse及Tomcat的配置详细教程解析
智慧金融ATM自助终端如何实现在线监控远程管理-5G工业路由器应用
苹果申请专利:按键可随屏幕显示变化
高压电机和低压电机相比的区别以及优缺点
国产存储技术的发展是举步维艰的
基于HY16F198B晶片实现电压电流测量计的应用设计
2016年真正机皇:三星s7 edge深度体验报告
下一款红米机型将搭载刘海屏 6月份上市
DSP28335的主频时钟如何得来?外设时钟如何设置?
中国电信天翼空间即将正式商用实现应用收费
炬芯科技智能手表芯片ATS3085获中国IC设计成就奖
金龟子化身好物推荐官,直播间大秀学习神器讯飞智能学习机
Innodisk发布全系列工控模组新品,“以软带硬”积极抢占市场
用于故障安全偏置的替代鲁棒电路结构介绍
新基建对机器人行业的作用有哪些