关于java一个登陆页面获取数据的php实现页面跳转,急

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&&#160;&#160;&#160;&#160;&#160; 为了写一个java的采集程序,从网上学习到3种方法可以获取单个网页内容的方法,主要是运用到是java IO流方面的知识,对其不熟悉,因此写个小结。
import java.io.BufferedR
import java.io.ByteArrayOutputS
import java.io.IOE
import java.io.InputStreamR
import java.net.HttpURLC
import java.net.URL;
import java.util.regex.M
import java.util.regex.P
public class Get_Html {
public static void main(String[] args) throws Exception
long start= System.currentTimeMillis();
String str_url=&/city/guangdong/guangzhou.php&;
Pattern p = pile(&&(13\\d{5}|15\\d{5}|18\\d{5}|147\\d{4})&&);
//String html = get_Html_2(str_url);
//String html = get_Html_1(str_url);
String html = get_Html_3(str_url);
Matcher m = p.matcher(html);
int num = 0;
while(m.find())
System.out.println(&打印出的号码段落:&+m.group(1)+&
编号&+(++num));
System.out.println(num);
long end = System.currentTimeMillis();
System.out.println(&花费的时间&+(end-start)+&毫秒&);
public static String get_Html_2(String str_url) throws IOException{
URL url = new URL(str_url);
String content=&&;
StringBuffer page = new StringBuffer();
BufferedReader in = new BufferedReader(new InputStreamReader(url
.openStream(), &utf-8&));
while((content = in.readLine()) != null){
page.append(content);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return page.toString();
public static String get_Html_1(String str_url) throws IOException{
URL url = new URL(str_url);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
InputStreamReader input = new InputStreamReader(conn.getInputStream(), &utf-8&);
BufferedReader bufReader = new BufferedReader(input);
String line = &&;
StringBuilder contentBuf = new StringBuilder();
while ((line = bufReader.readLine()) != null) {
contentBuf.append(line);
return contentBuf.toString();
* 通过网站域名URL获取该网站的源码
* @param url
* @return String
* @throws Exception
public static String get_Html_3(String str_url) throws Exception
URL url = new URL(str_url);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod(&GET&);
conn.setConnectTimeout(5 * 1000);
//设置连接超时
java.io.InputStream inStream = conn.getInputStream();
//通过输入流获取html二进制数据
byte[] data = readInputStream(inStream);
//把二进制数据转化为byte字节数据
String htmlSource = new String(data);
return htmlS
* 把二进制流转化为byte字节数组
* @param inStream
* @return byte[]
* @throws Exception
public static byte[] readInputStream(java.io.InputStream inStream) throws Exception {
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
buffer = new byte[1204];
int len = 0;
while ((len = inStream.read(buffer)) != -1){
outStream.write(buffer,0,len);
inStream.close();
return outStream.toByteArray();
【分别测试6次的结果】不知道是不是获取的网页数量内容较小,采集效率差不多,不过方法2应该是最好最简便的。
//get_Html_1&#160; 967&#160; ; ; ; 988&#160; 1236
//get_Html_2&#160; 02&#160; ; ; 1011
//get_Html_3&#160; 978&#160; ;&#160; ;&#160; ; ; 1774
1、关于url&#160; .openStream()和conn.getInputStream()。
&#160;&#160;&#160;&#160;&#160;&#160; 二者返回的的都是InputStrema对象,且都是通过openConnection()方法获取URLConnection对象,然后调用getInputStream()方法,所以方法2和方法1是一样的,但前者更方便。
2、关于BufferedReader类。
【该类的功能】:能将&#160; 字符流&#160; 放入缓冲区(内存中的一块小区域),以便实现高效的读取。
【看构造方法】:
BufferedReader(Reader in)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 创建一个使用默认大小输入缓冲区来缓冲字符输入流。
BufferedReader(Reader in, int sz)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 创建一个使用指定大小输入缓冲区的缓冲字符输入流。
【常用方法】:readLine()可以快速的实现文本字符的行读取。
3、关于InputStreamReader 类
InputStreamReader 是从字节流到字符流的桥梁:它读入字节,并根据指定的编码方式,将之转换为字符流,它是Reader的子类。
而为了达到更高效率,我们经常用 BufferedReader 封装 InputStreamReader , 所以我们经常看到的用法是
BufferedReader Buf = new BufferedReader(new InputStreamReader(System.in);
这里的InputStreamReader类的功能是将字节流转换为字符流,所以以上语句实现了 :将 字节输入流 转换为 字符输入流 且放置缓冲区。
引用一张图:
4、关于 ByteArrayOutputStream类
&#160;&#160;&#160;&#160;&#160;&#160; 它是OutputStream类的扩展类,其构造函数是byteArrayInputStream(byte []buf),作用是把字节数组buf 变成输入流的形式,并通过toString()或者toByteArray()方法或得想要的数据形式。方法3中的readInputStream方法可改为返回String类型,将后面的outStream.toByteArray()改为outStream.toString()方法,这样又精简了代码。
5、 关于InputStream类
&#160;&#160;&#160;&#160;&#160;&#160; InputStream与OutputStream: 是&#160; 8位字节 输入/输出流类的基类,主要用在处理二进制数据,它是按字节来处理的。文件在硬盘或在传输时都是以字节的方式进行的,包括图片等都是按字节的方式存储的,其余的字节流的处理类都是对该类的扩展,如等上面讲ByteArrayInputStream类。
&#160;&#160;&#160;&#160;&#160;&#160; 由于InputStream.read()方法是每次从流里只读取读取一个字节,效率会非常低。而InputStream.read(byte[] b)或者InputStream.read(byte[] b,int off,int len)方法,一次可以读取多个字节,效率较高,所以方法3中创建了一个byte字节数组,以便一次性读取更多的字节。当read()方法读取内容为空的时候,返回-1.
&#160;&#160;&#160;&#160;&#160; 另外字符输入输出流的基类 Reader/Writer,且要知道1个字符= 2字节,字符都是在内存中生成的,一个中文占两个字节,其子类包含有上面讲的的InputStreamRead类与BufferReader类。
&#160;&#160;&#160;&#160;&#160; 写了几点总结,都是和java的IO流有关的,是不是应该改个标题,想想还是算了,毕竟采集程序中很重要的一部分就是IO流方面的,java在IO流方面提供了丰富的类库,边学边积累吧。
阅读(...) 评论()关于java一个登陆页面获取数据的实现,急_百度知道
关于java一个登陆页面获取数据的实现,急
初学者,该怎么做?要怎么写,就是根据一个url,获取登陆页面后一个网页的数据,具体impl实现,username和pass我要写一个程序,求实际代码接口我也写好了,从一个登陆页面登陆, String user:public void login( String url
获取数据:public List&String& getProjectVersion()
提问者采纳
你一个参考httpclient
模拟登录,百度一下 httpclient
get或post提交
成功后悔response数据给你,更加登录页面传参数 username 和 password
你先分析下那个页面的登录用户名和密码的属性名 然后传值进去超简单,如果你还需要分析页面数据的话
有写的代码参考下吗?
字数太多,代码贴不了自己去百度 搜索 httpclient 使用
提问者评价
最后还是用htmlunit来做的,都做出来了,虽然没用你的做法,还是谢谢你啊
其他类似问题
为您推荐:
您可能关注的推广
登陆页面的相关知识
其他1条回答
没明白你想要啥?
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁java做的一个登陆界面 怎么连接上数据库来判断是不是用户并登陆_百度知道
java做的一个登陆界面 怎么连接上数据库来判断是不是用户并登陆
管理员的信息(包括编号和密码),希望各位高手能帮帮我,如果是教师,如果是用户登录!、StudentPane,谢谢,也可以发到我邮箱@qq!?如果是学生登录,则跳转到教师界面?教师、AdministratorPane分别作为登陆界面!在线等哈、管理员界面、TeacherPane、Teachers,我刚学这个,还要判断是学生!、学生界面,很菜,而在server数据库中存放了三张表Students、教师界面,则跳转到管理员界面、Administrators分表存放学生?还是管理员,如果是管理员,则跳转到学生界面、教师,现在我的问题是需要在登陆界面输入账号和密码时,连接上数据库来判断是不是用户登录我在做一个学生成绩管理系统,操作界面中有LoginPane,我是用MyEclipse做的
提问者采纳
提交数据之后在后台判断啊
来自团队:
其他类似问题
为您推荐:
您可能关注的推广
登陆界面的相关知识
其他3条回答
过你写的信息 我说一下自己的想法首先 输入用户名.通过用户名来进行限制.在输入界面 设置一个单项选择 让用户选择 身份,以此来进行身份区分,比如在用户名中以00,01,02来进行标注,从而确定 在哪一个表中去进行验证,也就是说 你要在进行验证之前就知道了 输入用户名的身份。2:1,密码
然后你要到三个表中进行信息验证
是的,这个我会写,我用了一个下拉菜单,并且用i参数获得了该身份,代码如下private String items[] =
{ &学生&,&教师&,&管理员& };model = new JLabel( &模式& ); jc = new JComboBox( items );jc.setMaximumRowCount( 3 );int i = jc.getSelectedIndex()现在,我不会的是你说的第二步,我不知道如何根据i到数据库中进行验证,希望这位高手可以帮我编个代码,谢谢!
哦你在用swing框架做的啊,那你用什么数据库呢?
我是用sql server 2008做的,Class.forName( &com.microsoft.sqlserver.jdbc.SQLServerDriver& )&#47;&#47;这是驱动程序url = &jdbc:sqlserver:&#47;&#47;localhost:1433;DatabaseName=ScoreMSystem&;&#47;&#47;这是数据库的链接
login = &sa&;
&#47;&#47;这是数据库的登录名
password = &123456&;
&#47;&#47;这是数据库的登录密码
你是想 混排(就是说所有的都在一起)?还是说 连接数据库啊,信息处理啊什么的区分开?(不过这要好几个java程序了,你看起来稍微有点复杂)
看起来不难啊,你意思之需要实现一个登陆而已吧?
其实你用户都之需要存一张表中,加一个标记就好了,比如学生是1,老师是2,管理员是3,登陆以后你只需要在session存入然后就可以在页面中判断他的身份了
听不懂,不知你能否按我上面说的那样编个代码给我呢,再三感谢了
现在有点事,晚上回来看吧。。session。request对象这些你懂不懂怎么用。我先出去了
不知道怎么用呢
意思就是存一个值 在session里面,在整个会话中都能使用这个值,你就可以通过这个值在每个页面最开始取出来
就可以判断身份或者说是权限了。
在的,你可以帮我写一个源代码吗??做了一天了,还没弄出来,都快崩溃了
现在在外面不方便。。等我回去给你吧。。后天大概是。。我再给你讲下思路吧、。首先是你能取出数据库中的数据么? 我设计数据库是这样的 用户表包括(账号 密码 标识flag(1是学生,2是教室,3是管理员)),到时候你登陆的时候需要根据你用户名来从数据库从取数据,加入有这个用户,就能取出他的密码和标识,然后比对密码对不对,密码都对的话,然后你写个判断
如果标识flag = 1就跳转到学生登陆页面,以此类推。这样就实现了跳转了。如果还有种情况就是别人根本没登陆就直接手动输入网址去学生界面或者直接到教师和管理员界面,你这样登陆就没意义了,那么你可以在登陆成功跳转的时候调用 session.setattribute来把这个flag值存入session里,意思就是你整个会话都能调用这个session来获取这个flag,这样你在学生的JSP页面你用session.getatrribute将你之前的flag取出,假如没有取出值,意思就是没有这个session,就说明你没有登录,取出的值不是1就说明不是学生账号。以此类推。。如果不懂session你就自己查下,很简单的。。方法更简单。。
一个最简单的方法。。将三张表合成一张表,里面加个字段SorTorA,值为:学生/教师/管理员之一,查询数据库的时候顺便把SorTorA的值传给登陆后台判断是什么就进什么界面
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 android实现页面跳转 的文章

 

随机推荐