- 当我们写完一个web程序之后(例如一个Servlet程序类,或者一个JSP页面),如果要访问这个web程序可以通过浏览器进行访问,还可以通过java客户端进行访问.
- 所谓的java客户端指的是.java.net.URL处理类,通过这个URL类可以访问指定的网页上的程序类
- URL类的使用示例
- 创建一个HelloProject动态网页项目,在这个项目之中创建一个HelloServlet程序类
package shu.mao.servlet;
import java.io.IOException;
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("/HelloServlet")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("*************"+req.getParameter("name"));
//服务端处理用户请求,并打印出请求参数
resp.getWriter().println("name = "+req.getParameter("name"));
}
}
- 本次通过java注解的方式设置映射路径位:"/HelloServlet",那么如果要在浏览器上访问这个程序类的话,访问路径为:
http://localhost:8080/HelloProject/HelloServlet?name=Hello
- 浏览器访问结果
- 如果想要通过java程序直接访问这个程序类的话就要使用到java.net.URL这个类
- 创建一个纯粹的java项目,定义一个Test类,在这个类中定义main方法来使用URL类
import java.io.InputStream;
import java.net.URL;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws Exception{
//设置访问路径
String url = "http://localhost:8080/HelloProject/HelloServlet?name=Hello";
//通过URL类直接访问该路径
URL myUrl = new URL(url);
//通过openStream()方法打开这个路径的连接,并返回一个InputStream
InputStream input = myUrl.openStream();
//进行连接
Scanner sca = new Scanner(input);
//设置换行符
sca.useDelimiter("\n");
while(sca.hasNext()){
System.out.println(sca.next());
}
}
}
- 控制台输出结果(Test类)
-
控制台输出(Tomcat)
-
通过此程序可以说明,web程序不一定只能够通过浏览器访问,使用java程序同样也可以访问,但是以上的程序只是处理了GET请求,而在web中有两种请求,get和post,要处理post请求需要配置一些头信息.
-
所以java对web程序的调用只提供了一些基础的功能,而对于一些复杂的操作并没有支持, 如果要想使用这些支持,需要使用一些第三方组件包,例如Apache的HttpComponents组件
-
要下载此开发包可以到Apache的官网上下载http://hc.apache.org/downloads.cgi
-
官网上有对这个组件的使用说明文档,文档中详细写了这个组件的使用方法