servlet简单示例+调用webservice服务

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 {

	@Override
	public void destroy() {
		// TODO Auto-generated method stub

	}

	@Override
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void init(ServletConfig arg0) throws ServletException {
		// TODO Auto-generated method stub

	}

	@Override
	public 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;
	

	@Override
	public 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.然后提交

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


  • 11
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这里是一个简单示例,实现一个带参数的WebService服务,在JavaEE平台上使用JAX-WS实现,返回不同的字符串: 1. 首先,创建一个动态Web工程,命名为AIWebService; 2. 在src目录下,创建一个Java类文件,命名为AIWebService.java,代码如下: ``` package com.example; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; @WebService public class AIWebService { @WebMethod public String getResponse(@WebParam(name="input") String input) { if(input.equals("Hello")) { return "Hi, how can I help you?"; } else if(input.equals("What's your name?")) { return "My name is ChitGPT, what's yours?"; } else { return "Sorry, I don't understand."; } } } ``` 3. 在web.xml文件中,配置WebService的端口和服务路径,代码如下: ``` <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>AIWebService</display-name> <servlet> <servlet-name>AIServlet</servlet-name> <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class> <init-param> <param-name>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</param-name> <param-value>1</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>AIServlet</servlet-name> <url-pattern>/chatbot</url-pattern> </servlet-mapping> </web-app> ``` 4. 在项目中添加JAX-WS依赖,可以在pom.xml文件中添加以下代码: ``` <dependency> <groupId>com.sun.xml.ws</groupId> <artifactId>jaxws-rt</artifactId> <version>2.3.3</version> </dependency> ``` 5. 在项目中添加JAX-WS的Endpoint配置文件,命名为endpoint.xml,代码如下: ``` <?xml version="1.0" encoding="UTF-8"?> <endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0"> <endpoint name="AIWebService" implementation="com.example.AIWebService" url-pattern="/chatbot" /> </endpoints> ``` 6. 在项目中添加JAX-WS的Servlet配置文件,命名为sun-jaxws.xml,代码如下: ``` <?xml version="1.0" encoding="UTF-8"?> <endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0"> <endpoint name="AIWebService" implementation="com.example.AIWebService" url-pattern="/chatbot" /> </endpoints> ``` 7. 使用maven构建项目,并将项目部署到Tomcat服务器上; 8. 在浏览器中访问WebService服务,例如: ``` http://localhost:8080/AIWebService/chatbot?wsdl ``` 9. 在浏览器中访问WebService服务,并发送请求,例如: ``` http://localhost:8080/AIWebService/chatbot/getResponse?input=Hello ``` 10. 在浏览器中查看WebService服务返回的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值