如果是在局域网中测试,本地的话就是127.0.0.1或localhost,或改为局域网中的其它IP地址,如果是广域网的话,那就得搭建服务器,就是不搭建也得有一个固定的外网IP才行。
成都创新互联公司为客户提供专业的网站设计制作、成都网站制作、程序、域名、空间一条龙服务,提供基于WEB的系统开发. 服务项目涵盖了网页设计、网站程序开发、WEB系统开发、微信二次开发、手机网站开发等网站方面业务。
JAVA请求是走完代码流程才算结束。
这个问题其实分两步:
第一步是用户点击页面,并发送请求到服务器的步骤,这个步骤很复杂,涉及到网络协议很多东西,我们暂且不讲。
第二步就是服务器收到请求,我们代码执行的过程
扩展资料:
有两个请求并发访问,也就是说有两个线程同时准备进入方法printA()。那么问题来了
是线程1先进入方法执行完毕后再让线程2进入执行吗。
不是的,是两个线程同时去执行这一段代码
那有同学可能会问了,如果两个线程同时进入这个方法,
线程1执行到a = a + 10;此时a的值为11,
然后线程2进入方法执行int a = 1; 那线程1打印出来a是不是就变成1了。
不是的,线程1打印a还是为11,为什么呢,因为a是定义在方法里面的,是局部变量。
然后每个线程是不是都有一个私有的本地内存(Local Memory),这个私有本地内存是不是存放这个局部变量的,答案是肯定的,既然赋值操作都是在我自己的地盘弄的,那肯定不会影响到别人。
用httpclient就行
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("");
httpGet.addHeader("MyHeader", "MyValue");
try {
String body = httpClient.execute(httpGet, new ResponseHandlerString() {
@Override
public String handleResponse(HttpResponse response) throws IOException {
Header firstHeader = response.getFirstHeader("MyHeader");
String headerValue = firstHeader.getValue();
return EntityUtils.toString(response.getEntity());
}
});
} catch (IOException e) {
e.printStackTrace();
}
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.regex.*;
import javax.swing.*;
import javax.swing.table.*;//一个Web的爬行者(注:爬行在这里的意思与抓取,捕获相同)
public class SearchCrawler extends JFrame{
//最大URL保存值
private static final String[] MAX_URLS={"50","100","500","1000"};
//缓存robot禁止爬行列表
private HashMap disallowListCache=new HashMap();
//搜索GUI控件
private JTextField startTextField;
private JComboBox maxComboBox;
private JCheckBox limitCheckBox;
private JTextField logTextField;
private JTextField searchTextField;
private JCheckBox caseCheckBox;
private JButton searchButton;
//搜索状态GUI控件
private JLabel crawlingLabel2;
private JLabel crawledLabel2;
private JLabel toCrawlLabel2;
private JProgressBar progressBar;
private JLabel matchesLabel2;
//搜索匹配项表格列表
private JTable table;
//标记爬行机器是否正在爬行
private boolean crawling;
//写日志匹配文件的引用
private PrintWriter logFileWriter;
//网络爬行者的构造函数
public SearchCrawler(){
//设置应用程序标题栏
setTitle("搜索爬行者");
//设置窗体大小
setSize(600,600);
//处理窗体关闭事件
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
actionExit();
}
});
//设置文件菜单
JMenuBar menuBar=new JMenuBar();
JMenu fileMenu=new JMenu("文件");
fileMenu.setMnemonic(KeyEvent.VK_F);
JMenuItem fileExitMenuItem=new JMenuItem("退出",KeyEvent.VK_X);
fileExitMenuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
actionExit();
}
});
fileMenu.add(fileExitMenuItem);
menuBar.add(fileMenu);
setJMenuBar(menuBar);