您的位置:首页 > 运维架构

初步学习Servlet执行的全过程

2017-04-21 16:54 176 查看


实现点击一个超链接,然后连接到一个新的页面?


代码如下:<a href="">点击我跳转到新页面</a>,href="",如何填写??

(1)我们最开始学过静态页面,当我们把href="helloWorld.html"时,这时点击链接就会出现"helloWorld这个页面,但是这个页面是我们写死的,传到服务器,被href直接调用,我们不能随意的改变这个页面里,除非把这个页面重写,再重新传到服务器上。

(2)现在我们要使用另外一种方式,动态页面,怎么做?第一步:我们创建一个包servlet,包里面创建一个java类helloWorld.java这个类继承于HttpServlet,改写doGet(),doPost()方法,改写什么?我们在doGet()方法中写上,System.out("调用doGet()方法"),这句话是在后台控制台输出的,和一般的java程序一样,然后我们想在网页上输出信息,则要实例化一个对象,Printf
out=new Printf(); 调用out对象的printf(“<p><strong>helloWorld!</strong></p>”)方法就可以在页面上输出信息,和一般的java程序新建类,实例对象,用对象调用方法一样,所以说,servlet就是java类,,但是这个时候浏览器会输出<p><strong>helloWorld!</strong></p>,而不是helloWorld!,这个时候在printf(“”“”)之前加一句,out.contenttype("text/html");就可以了。第二步编写完helloWorld.java,我们还在部署web.xml文件,里面有两个重要标签

<servlet>
<servlet-name>helloworld</servlet-name>
//名字自定义,和下面的一样就好
<servlet-class>servlet.helloWorld</servlet-class>//包名.类名
</servlet>
<servlet-mapping>
<servlet-name>helloworld</servlet-name>
<url-pattern>这就是<a>的超链接或者表单的action</url-pattern>
</servlet-mapping>


第三步,我们要把我们这个web项目部署到Tomcat服务器上,这个可以在myeclipse上操作,启动Tomcat服务器,然后打开服务器访问地址是:。。。。。。。,

这样子点击超链接就可以动态形成,一个新的页面,并且新页面上显示我们用printf(“<p><strong>helloWorld!</strong></p>”)的内容helloWorld!

1、为什么创建的也就是自定义的helloWorld类要继承于HttpServlet类?

每一个自定义的Servlet都必须实现Servlet的接口,Servlet接口中定义了五个方法,其中比较重要的三个方法涉及到Servlet的生命周期,分别是init(),service(),destroy()方法。GenericServlet是一个通用的,不特定于任何协议的Servlet,它实现了Servlet接口。而HttpServlet继承于GenericServlet,所以我们定义Servlet的时候只需要继承HttpServlet即可。HttpServlet是特定于HTTP协议的类,所以HttpServlet中实现了service()方法,并将请求ServletRequest,ServletResponse强转为HttpRequest和HttpResponse

这里还可以解释下http的四种传输协议:

Web开发最常见的就是HTTP(超文本传输协议)通信协议,get post delete put ,重点说一下get是不安全的,post比较安全可靠,密码,表单都用它


2、为什么要部署web.xml文件?

web.xml文件是一种映射关系,当点击链接时或提交表单,服务器先访问web.xml,先找到<servlet-mapping>下的<url-pattern>然后找到<serlet-name>,然后访问<servlet>中的<servlet-name>有没有对应的一样的,找到一样的下面的<servlet-class>在服务器端生成html文档,传回浏览器。这class文件是之前是servlet.java在Tomcat容器中在jdk的作用下解析完的放在Tomcat的class文件夹下

3、如果不使用myeclipse,怎么把项目部署到Tomcat上?

将你的web工程直接复制到Tomca webapps下

4、为什么要重写doGet(),doPost()方法?

服务器调用HttpServlet的Service方法,其内部调用是根据当前请求是GET还是POST的提交请求来做出具体调用哪一个方法,而在HttpServlet里边没有具体实现这个是一模板方法,由用户自己实现业务逻辑,

我们自己写Servlet的时候,处理请求的时候实现Service()就好。这里并没有去重写Service()方法,而是重写doGet和doPost2个方法,在HttpServlet抽象类中,已经实现了Service方法了,在有请求进来Servlet的时候首先从请求中获取到请求提交的方式,比如说get方式或者post方式,在调用相关的doXXX方法。所以我们直接重写doGet和doPost方法就好。通常来说在doGet和doPost中实现一个就够了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息