servlet简单示例+调用webservice服务

来源:互联网 发布:淘宝绸缎丝带 编辑:程序博客网 时间:2024/05/06 08:27

servlet简单示例+调用webservice

1:servlet的简单示例

            1.1:servlet是什么?

                       

               Servlet(Server Applet),全称Java Servlet,暂无中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。
                Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                以上是百度百科里面的解释,我这是笔记,是写着初学者看得,所以只要记住两点
                 (1):实现了servlet接口;
                 (2):接受客户端(浏览器)的请求并作出反应

            1.2:创建第一个servlet

                          

                        新建一个类,类名自取,要注意的是实现servlet接口,图中红色标注部分

   

import java.io.IOException;import javax.servlet.Servlet;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class servlet implements Servlet {@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic ServletConfig getServletConfig() {// TODO Auto-generated method stubreturn null;}@Overridepublic String getServletInfo() {// TODO Auto-generated method stubreturn null;}@Overridepublic void init(ServletConfig arg0) throws ServletException {// TODO Auto-generated method stub}@Overridepublic void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {//后台日志记录                System.out.println("servlet开始响应请求!");                //页面返回结果               arg1.getOutputStream().write("<font color='red'><input type='text' value='hello world!' /></font>".getBytes());}}
我们可以看到生成的代码里实现 了五个方法,先聚焦最后一个service()方法,其他方法在servlet生命周期里讲。arg1是响应的结果,我们给他输出一个红色的“hello world”字样。


servlet写好了接下来就是配置web.xml文件了(不配置tomcat怎么知道如何去构建servlet呢,服务器又怎么调用呢)

web.xml


<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">  <display-name>MyServlet</display-name>  <welcome-file-list>    <welcome-file>index.html</welcome-file>    <welcome-file>index.htm</welcome-file>    <welcome-file>index.jsp</welcome-file>    <welcome-file>default.html</welcome-file>    <welcome-file>default.htm</welcome-file>    <welcome-file>default.jsp</welcome-file>  </welcome-file-list>  <servlet>    <!-- 自己給servlet取得名字 -->      <servlet-name>servlet</servlet-name>       <!-- servlet的路徑  -->    <servlet-class>com.ustcinfo.servlet.servlet</servlet-class>  </servlet>  <servlet-mapping>      <!-- 與上面的servlet-name對應 -->    <servlet-name>servlet</servlet-name>    <!-- 訪問servlet的地址,自己取 -->    <url-pattern>/hello1</url-pattern>  </servlet-mapping></web-app>
主要配置两个东西<servlet>和<servlet-mapping>,前者是tomcat用来构建servlet,后者是映射地址让浏览器请求能发送到正确的位置。

启动服务器,浏览器里输入地址:http://localhost:8080/MyServlet/hello1,结果如下:


      简单的servlet就构建好了!

            1.3:servlet的生命周期

  接下来说一下servlet的生命周期:上文提到了我们在构建servlet类的时候实现了servlet接口,里面有五个方法:

                         destroy():销毁servlet,停掉服务器的时候调用

                        getServletConfig():获取servlet配置信息。

                        getServletInfo():获取servlet的属性信息。

                        init(ServletConfig config):初始化信息。

                        service(ServletRequest request, ServletResponse response):响应请求。

所以不难看出在我们启动服务器的调用某个servlet的时候的过程是:

                     init(ServletConfig config)————service(ServletRequest request, ServletResponse response)————destroy()

其他两个是穿插在其中的,并不影响servlet的生命周期。

ps:其实servlet是可以在服务器启动时就创建,不用非得等到servlet调用才创建。这里就需要在web.xml的servlet中配置一个<load-on-startup>参数为int类型,表示的意思是第几个自动创建的servlet的意思。

            1.4:HttpServlet

前面讲的是基本的servlet,servlet一共有三种,而最常用的一种就是Httpservlet,基本百分之九十都是它。

右击项目new----servlet可以看到上图所示内容,注意实现的接口是HttpServlet(相当于在servlet上封装了一个http协议)。

然后往下next,可以设置我们的访问地址(这里有这个设置是因为我们用的是注解的方式),接着next可以选择我们要重写的方法(一般来说只需要重写两种doGet,doPost,这两个区别在于,浏览器的访问方式是post还是get)。

下面通过servlet调用web服务来详细介绍HttpServlet.

2:通过servlet调用web服务

            2.1创建webservice

可见我的上一篇博客:http://blog.csdn.net/lucky123sky/article/details/54380115

            2.2调用的实现

创建好webservice并解析WSDL文档后,将生成的java文件(class文件删除)拷贝到我们servlet所在的项目中。

注意:上面我们已经介绍了用web.XML配置,这里我们采用注解的方式。一处表示的是ServletContext里的参数,我们暂时用不上。二处是url-mapping也就是容器创建好servlet后给外界提供的访问servlet的地址。

上图我们可以看到实现的额方法可能跟之前的servlet有点不一样,但是大家一定听过post,get方式。这里的doPost和doGet就是分别处理这些方式的,如果在前台提交表单的时候没有说明方式,那么默认的就是get方式。

httpServletMain.java

package com.ustcinfo.client;import java.io.IOException;import java.io.PrintWriter;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.Map;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet(asyncSupported = true, urlPatterns = { "/servletService" },loadOnStartup=1)public class httpServletMain extends HttpServlet {private static final long serialVersionUID = 1L;@Overridepublic void init() throws ServletException {System.out.println("創建servlet!");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        //构建我们需要的服务对象HelloWebServiceService hw = new HelloWebServiceService();HelloWebService hws = hw.getHelloWebServicePort();String name = request.getParameter("name");String rs = hws.helloWord(name);response.getOutputStream().write(rs.getBytes());}}
这里我们重写了doPost方法,我们在前台准备以post的方式发送数据。

接下来写我们前台的jsp文件

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><form action="servletService" method="post"><input type="text" name="name" /><input type="submit" value="submit"/></form></body></html>
这个jsp里有一个form表单,表单的action是servletService,这个跟我们建立httpServlet是填写的URL-Mapping是一致的,这样我们才能准确的发送我们表单到正确的位置。

到这基本就完成了,我们首先启动我们的服务,然后部署我们的servlet到tomcat中。

输入网址:http://localhost:8080/MyServlet/service.jsp

随便输入一行字符串:如:chenQQQ.然后提交

就可以看到我们返回的结果了,嘻嘻。


0 0