java md5加密代码代码问题[有图][新手问题][应该只是我一时脑抽]

当前位置: >
> java新闻抓取程序图片下载不全的有关问题
java新闻抓取程序图片下载不全的有关问题
susanshuo & at
java新闻抓取程序图片下载不全的问题我做了个程序把新浪上的天气新闻抓过来存到本地,考虑访问速度问题,新闻中的图片也要保存到本地。程序如下  Java code   .weather1;
import java.io.BufferedR import java.io.ByteArrayOutputS import java.io.F import java.io.FileW import java.io.IOE import java.io.InputS import java.io.InputStreamR import java.io.PrintW import java.net.URL; import java.net.URLC import java.util.regex.M import java.util.regex.P
import ormons.logging.L import ormons.logging.LogF
.update.G /**
* 正则方式抓取新浪天气新闻上的新闻
* @param args
*/ public class Newlist {
private static final Log log = LogFactory.getLog(Newlist.class);
* @param args
static void main(String args[]){
Newlist n=new Newlist();
String[] k=n.getNewList();
for (int i=0;i&k.i++){
System.out.println(k[i].replace(&href=\&&, &href=\&newinfo2.jsp url=&));
String[] m=n.getNewinfo(&news/261.html&);
for (int l=0;l&m.l++){
System.out.println(m[l]);
* 由url地址获得新闻内容string[]
* 新闻中的图片下载到本地,文中新闻地址改成本地地址
* @param url
public String[] getNewinfo(String url){
String URL=&;+
//30是指取30段满足给出的正则条件的字符串,如果只找出10个,那数组后面的全为null
String[] s = analysis(&&p&(.* )&/p$>$ , getContent(URL) , 30);
for (int i=0;i&s.i++){
Pattern sp = pile(&src=\&(.* )\&&);
Matcher matcher = sp.matcher(s[i]);
if (matcher.find()){
String imageurl=analysis(&src=\&(.* )\&& , s[i] , 1)[0];
if(!imageurl.startsWith(&http://&)){
imageurl=&;+
System.out.println(&新闻有图片:&+imageurl);
String content=getContent(imageurl);
String[] images=imageurl.split(&/&);
String imagename=images[images.length-1];
System.out.println(&图片名:&+imagename);
File fwl = new File(imagename);
PrintWriter outl = new PrintWriter(fwl);
outl.println(content);
outl.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(&s[i]:&+s[i]);
//修改文件图片地址
s[i]=s[i].replace(analysis(&src=\&(.* )\&& , s[i] , 1)[0], imagename);
String[] getNewList(){
String url=&&;
return getNewList(getContent(url));
String[] getNewList(String content ){
//String[] s = analysis(&align=\&center\& valign=\&top\&$>$img src=\&../images/a(.* ).gif\& width=\&70\& height=\&65\&$>$/td$>$ , content , 50);
String[] s = analysis(&&li&(.* )&/li$>$ , content , 50);
private String[] analysis(String pattern, String match , int i){
Pattern sp = pile(pattern);
Matcher matcher = sp.matcher(match);
String[] content = new String[i];
for (int i1 = 0; matcher.find(); i1++){
content[i1] = matcher.group(1);
//下面一段是为了剔除为空的串
for (int k=0;k&content.k++){
if (content[k]==null){
String[] content2;
if (l!=0){
content2=new String[l];
for (int n=0;n&l;n++){
content2[n]=content[n];
return content2;
* 由地址获取网页内容
* @param strUrl
private String getContent(String strUrl){
//URL url = new URL(strUrl);
//BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
URLConnection uc = new URL(strUrl).openConnection();
//通过修改http头的User-Agent来伪装成是通过浏览器提交的请求
uc.setRequestProperty(&User-Agent&,
&Mozilla/4.0 ( MSIE 5.0; Windows XP; DigExt)&);
System.out.println(&-----------------------------------------&);
System.out.println(&Content-Length:
&+uc.getContentLength());
System.out.println(&Set-Cookie:
&+uc.getHeaderField(&Set-Cookie&));
System.out.println(&-----------------------------------------&);
//获取文件头信息
System.out.println(&Header&+uc.getHeaderFields().toString());
System.out.println(&-----------------------------------------&);
BufferedReader br=new BufferedReader(new InputStreamReader(uc.getInputStream(), &gb2312&));
String s = &&;
StringBuffer sb=new StringBuffer();
while((s = br.readLine())!=null){
sb.append(s+&\r\n&);
System.out.println(&长度+&+sb.toString().length());
return sb.toString();
}catch(Exception e){
return &error open url& + strU
public static
String getContent (String strUrl){
URLConnection uc =
String all_content=
all_content =new
URL url = new URL(strUrl);
uc = url.openConnection();
uc.setRequestProperty(&User-Agent&,
&Mozilla/4.0 ( MSIE 5.0; Windows XP; DigExt)&);
System.out.println(&-----------------------------------------&);
System.out.println(&Content-Length:
&+uc.getContentLength());
System.out.println(&Set-Cookie:
&+uc.getHeaderField(&Set-Cookie&));
System.out.println(&-----------------------------------------&);
//获取文件头信息
System.out.println(&Header&+uc.getHeaderFields().toString());
System.out.println(&-----------------------------------------&);
if (uc == null)
InputStream ins = uc.getInputStream();
ByteArrayOutputStream outputstream = new ByteArrayOutputStream();
byte[] str_b = new byte[1024];
int i = -1;
while ((i=ins.read(str_b)) & 0) {
outputstream.write(str_b,0,i);
all_content = outputstream.toString();
// System.out.println(all_content);
} catch (Exception e) {
e.printStackTrace();
log.error(&获取网页内容出错&);
// return new String(all_content.getBytes(&ISO8859-1&));
System.out.println(all_content.length());
return all_
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-java问题,新手的问题,如图所示,希望得到详细的回答啊!_百度知道
java问题,新手的问题,如图所示,希望得到详细的回答啊!
baidu.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http.hiphotos://a.com/zhidao/pic/item/7e3ecfa3ecb97df9dcd100baa12baf://a.hiphotos.jpg" esrc="/zhidao/wh%3D600%2C800/sign=2f6e65e98326cffc697fb7b/7e3ecfa3ecb97df9dcd100baa12baf./zhidao/wh%3D450%2C600/sign=12a99f414b90fc229f2d/7e3ecfa3ecb97df9dcd100baa12baf<a href="http
提问者采纳
调用它的set方法 置null,随便往里面放个变量,提供了四种方法 解释代码static{
SXSXXSX}加载一个类的时候先加载初始化块,在你开辟的线程中创建一个拓本而已 关闭连接 就是在当前线程中把ThreadLocal,这样当前线程的conn就会被释放,初始化块已经帮你获得了连接 然后你下面的两个方法不过是从ThreadLocal中。 也就是说。然后写两个线程去操作这个类的那个变量你用线程1去改变那个变量:线程一线程二中的那个变量 只不过是 【被放入ThreadLocal中的变量】的一个拓本(复制品) threadlocal 是泛型,但是线程2得到的还是原来的变量,调用ThreadLocal的get方法ThreadLocal这么说吧,你在一个类里面一个TreadLocal
提问者评价
你真棒,学习了
其他类似问题
按默认排序
其他5条回答
ataSource 是定义数据库的连接信息(或者说连接数据库的配置信息),另一个类,我也不碰到第一个方法,很明显就是从DataSource得到连接数据库的信息
连接的单例模式!在本地的线程中获得,确保你使用的连接是同一个!
这个问题很难,你需要自己摸索,慢点看吧,把源代码都下过来,从头看到尾,反正都是java总会看懂的。
...好基础的东西。。
我表示图片不清晰,看不清楚。。
如图所示的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁public Test() throws Exception {
setBackground(SystemColor.windowBorder);
// 设置窗体加载时最大化
setExtendedState(JFrame.MAXIMIZED_BOTH);
// 去掉边框
setUndecorated(true);
// 单击退出按钮退出
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 退出失效
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
setForeground(SystemColor.windowBorder);
setTitle("Hello World");
// setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setForeground(SystemColor.windowBorder);
contentPane.setBackground(SystemColor.windowBorder);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
//给Jpanel布局
XYLayout xYLayout1 = new XYLayout();
this.getContentPane().setLayout(xYLayout1);
int count = 1; // 菜名序号
int countqty = 0; // 一种菜名点了几份
int countdone = 0; // 完成的份数
String done_qty = ""; // 一种菜名的总份数和完成的份数(如:3/3)
String conunt_qty = ""; // 所有菜单 一共点了几份和一共完成几份(如:7/7)
TableService ts = new TableServiceImpl();
List&Kitchenbill00& k00lt = ts.showTable();
String columnName = "";
String kb00ID = "";
Object[][] datas = null;
//定义数组Jtable中要存放的数据
for (int k = 0; k & k00lt.size(); k++) {
Kitchenbill00 kb = k00lt.get(k);
kb00ID = kb.getBill_id();
String table_no = kb.getTable_no();
OrderService ds = new OrderServiceImpl();
List&Kitchenbill01& lt = ds.showOrder(kb00ID);
datas = new Object[lt.size()][3]; // 初始化数组 存放表格中的数据
for (int i = 0; i & lt.size(); i++) {
Kitchenbill01 da = lt.get(i);
countqty += (int) da.getQty(); // 一种菜名点了几份
countdone += (int) da.getDone_qty(); // 完成的份数
// 一种菜名的总份数和完成的份数(如:3/3)
done_qty = (int) da.getDone_qty() + "/" + (int) da.getQty();
datas[i][0] =
datas[i][1] = da.getProd_name1();
datas[i][2] = done_
count++; // 菜名序号
// 所有菜单 一共点了几份和一共完成几份(如:7/7)
conunt_qty = countdone + "/" +
columnName = "桌号:," + table_no + "," + conunt_
System.out.println(table_no);
//Jtable的标题部门就是图中只显示第一个的标题,其他三个没显示
String[] columnNames = columnName.split(",");
DefaultTableModel tb = new DefaultTableModel(datas, columnNames);
// 然后你再实例化一个JTable
JTable t = new JTable(tb);
//显示标题
t.setPreferredScrollableViewportSize(new Dimension(550,30));
this.getContentPane().add(t.getTableHeader(),BorderLayout.NORTH);
this.getContentPane().add(t,BorderLayout.CENTER);
//某列居中
DefaultTableCellRenderer render = new DefaultTableCellRenderer();
render.setHorizontalAlignment(SwingConstants.CENTER);
t.getColumn("桌号:").setCellRenderer(render);
t.setBorder(new LineBorder(SystemColor.menu, 2));
t.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
t.setBounds(new Rectangle(1, 20, 248, 290));
t.setForeground(Color.RED);
t.setBackground(Color.CYAN);
// 定义一个容器
JPanel p = new JPanel();
p.setPreferredSize(new Dimension(250, 350));// 关键代码,设置JPanel的大小
p.setLayout(null);
xYLayout1.setWidth(500);
xYLayout1.setHeight(1000);
//设置Jpanel在窗体的位置和大小
this.getContentPane().add(p, new XYConstraints(5*53*k, 2, 225, 350));
p.setForeground(Color.BLUE);
p.setBackground(Color.GREEN);JAVA WEB 项目上传图片问题,请问大家都是如何实现的
[问题点数:20分,结帖人lyqiang00]
JAVA WEB 项目上传图片问题,请问大家都是如何实现的
[问题点数:20分,结帖人lyqiang00]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
本帖子已过去太久远了,不再提供回复功能。java:这个代码为什么我新建一个类(图二)就是对的,新建两个类(图三)就是错的?会有如四的错误_百度知道
提问者采纳
因为你已经定义过testdogdrive这个类了,并且都在包名为dog下,他和dog同在一个文件里  你好
可是为什么我在class testdogdrive 前加上public就又可以运行了?
  你好,一个包下一个文件中只能有一个类是public,并且必须和文件名保持一致
我把它分成了两个文件(在同一个包里)。。为什么不加public就是错的呢……?
  你好,这是优先级的问题,同一个包下不能有两个相同的类名,同一个文件中只能有一个public修饰的类名并且和文件名保持一致,后者是优先于前者的。
并没有两个相同的类名呀
为什么我放在一个包里一个public都不加就不能运行呢……
  你好,testdogdrive这个类已经重复了,一个是在dog.java文件中,一个是testdogdrive.java文件中
dog.java里真的没有.....是不是它自动加上去的?...分成两个的时候已经把dog.java里的删掉了……
  你好,看了你截的图片,dog,java中有两个类,分别是dog和dogtestdrive,如果分成两个就dog.java中的dogtestdrive删除就好了
提问者评价
太给力了,你的回答完美的解决了我的问题!
其他类似问题
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 java二维码生成代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信