Servlet部署细节

目录

开发servlet的三种方法

①实现servlet接口的方式

②使用GenericServlet开发servlet

③使用继承 HttpServlet 的方法来开发Serlvet

小结 get 提交 和 post的提交的区别

补充


开发servlet的三种方法

  1. 实现 Servlet接口
  2. 通过继承 GenericServlet
  3. 通过继承 HttpServlet

 

①实现servlet接口的方式

需求如下: 请使用实现 接口的方式,来开发一个Servlet ,要求该Servlet 可以显示Hello,world,同时显示当前时间.

步骤

  1. webapps下建立一个web应用 hspWeb1
  2. hspWeb1 下建立 WEB-INF->web.xml [web.xml可以从 ROOT/WEB-INF/web.xml拷贝]
  3. WEB-INF 下建立 classes 目录(我们的Servlet 就要在该目录开发.),建立  lib文件夹

     4. 开发MyServlet.java

 

package com.hsp;

import javax.servlet.*;

import javax.servlet.http.*;  为了能将servlet-api.jar包引入,需要配置环境变量

变量值; E:\tomcat\apache-tomcat-6.0.20\lib\servlet-api.jar 记得带上文件名

 

import java.io.*;

 

class MyFirstServlet implements Servlet

{

       //该函数用于初始化servlet,就是把该servlet装载到内存中

       //该函数只会被调用一次

       public void init(ServletConfig config)

          throws ServletException{

       }

 

       //得到ServletConfig对象

       public ServletConfig getServletConfig(){

              return null;

       }

      

       //该函数是服务函数,我们的业务逻辑代码就是写在这里

       //该函数每次都会被调用

       public void service(ServletRequest req,

                    ServletResponse res)

             throws ServletException,

                    java.io.IOException{

       }

       //该函数时得到servlet配置信息

       public java.lang.String getServletInfo(){

              return null;

       }

       //销毁该servlet,从内存中清除,该函数被调用一次

       public void destroy(){

       }

}

 

5. 根据Servlet规范,我们还需要部署Servlet

 

<?xml version="1.0" encoding="ISO-8859-1"?>

<!--

 Licensed to the Apache Software Foundation (ASF) under one or more

  contributor license agreements.  See the NOTICE file distributed with

  this work for additional information regarding copyright ownership.

  The ASF licenses this file to You under the Apache License, Version 2.0

  (the "License"); you may not use this file except in compliance with

  the License.  You may obtain a copy of the License at

 

      http://www.apache.org/licenses/LICENSE-2.0

 

  Unless required by applicable law or agreed to in writing, software

  distributed under the License is distributed on an "AS IS" BASIS,

  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

  See the License for the specific language governing permissions and

  limitations under the License.

-->

 

<web-app 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 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

   version="2.5">

 

       <!--根据serlvet规范,需要将Servlet部署到web.xml文件,该部署配置可以从examples下拷贝-->

        <servlet>

              <!--servlet-name 给该Servlet取名, 该名字可以自己定义:默认就使用该Servlet的名字-->

      <servlet-name>MyFirstServlet</servlet-name>

         <!--servlet-class要指明该Servlet 放在哪个包下 的,形式是 包/包/../类-->

      <servlet-class>com.hsp.MyFirstServlet</servlet-class> 注意:后面不要带.java

    </servlet>

              <!--Servlet的映射-->

        <servlet-mapping>

              <!--这个Servlet-name要和上面的servlet-name名字一样-->

        <servlet-name>MyFirstServlet</servlet-name>

              <!--url-pattern 这里就是将来访问该Servlet的资源名部分,可以自定义,默认与servlet-name一样-->

        <url-pattern>/ABC</url-pattern>

    </servlet-mapping>

 

</web-app>

服务器调用流程:http://localhost:8088/ABC--->--->--->--->

6. 在浏览器中测试

在浏览器中输入

http://localhost:8088/hspweb1/ABC

 

7. 分析一下自己写可能出现的错误

     1)<servlet-name>MyFirstServlet</servlet-name> 名字不一样 (启动tomcat错误)

     2)<servlet-class>com.hsp.MyFirstServlet</servlet-class>  写成 MyFirstServlet.java,会报告500

     3)资源名自己写错http://localhost:8088/hspweb1/错误的资源url-pattern404 错误)

 

②使用GenericServlet开发servlet

了解即可:

       案例 :

package com.hsp;

 

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

public class MyGenericServlet extends GenericServlet

{

       public  void service(ServletRequest req,

                             ServletResponse res)

                      throws ServletException,

                             java.io.IOException{

              res.getWriter().println("hello,world,i am geneirc servlet");

       }

}

将该Servlet部署到web.xml文件中:

<!--根据serlvet规范,需要将Servlet部署到web.xml文件,该部署配置可以从examples下拷贝-->

        <servlet>

              <!--servlet-name 给该Servlet取名, 该名字可以自己定义:默认就使用该Servlet的名字-->

      <servlet-name>MyGenericServlet</servlet-name>

         <!--servlet-class要指明该Servlet 放在哪个包下 的,形式是 包/包/../类-->

      <servlet-class>com.hsp.MyGenericServlet</servlet-class>

    </servlet>

              <!--Servlet的映射-->

        <servlet-mapping>

              <!--这个Servlet-name要和上面的servlet-name名字一样-->

        <servlet-name>MyGenericServlet</servlet-name>

              <!--url-pattern 这里就是将来访问该Servlet的资源名部分,默认命名规范:

              就是该Servlet的名字-->

        <url-pattern>/MyGenericServlet</url-pattern>

</servlet-mapping>

③使用继承 HttpServlet 的方法来开发Serlvet

  1. 在软件公司 90%都是通过该方法开发.
  2. 举例说明; 还是显示 hello,world 当前日期

 

代码:

 

package com.hsp;

 

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

 

public class MyHttpServlet extends HttpServlet

{

       //在HttpServlet 中,设计者对post 提交和 get提交分别处理

       //回忆 <form action="提交给?" method="post|get"/>,默认是get

 

       protected void doGet(HttpServletRequest req,

                     HttpServletResponse resp)

              throws ServletException,

                     java.io.IOException{

              resp.getWriter().println("i am httpServet doGet()");

             

       }

       protected void doPost(HttpServletRequest req,

                      HttpServletResponse resp)

               throws ServletException,

                      java.io.IOException{

              resp.getWriter().println("i am httpServet doPost() post name="+req.getParameter("username"));

       }

}

 

还有一个login.html

<html>

<body>

<form action="/hspWeb1/MyHttpServlet" method="post">

u:<input type="text" name="username"/>

<input type="submit" value="login"/>

</body>

</html>

 

小结      get 提交 和 post的提交的区别

  • 从安全看 get<post 因为get 会把提交的信息显示到地址栏
  • 从提交内容看 get<post get 一般不要大于2k, post理论上无限制,但是在实际开发中,建议不要大于64k
  • 从速度看 get>post,get要求服务器立即处理请求,post请求可能形成一个队列请求
  • Get可以保留uri中的参数,利于收藏

补充

补充: 如果使用javac 去编译一个带包的java文件,则需要带命令参数

javac –d . java文件

补充: 如何不重启tomcat,就指定去 reload 一个web应用,方法:

进入到 tomcat 的  manager:

点击reload即可.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值