0%

爬虫遇到 js 动态数据时,主要解决方法有两种:

  1. 使用一些库,例如 Selenium,来模拟浏览器环境抓取数据。但这样做对内存和 CPU 的消耗都比较大,爬虫效率低,应尽量避免。
  2. 手动分析 js 请求

下面我选了一个漫画网站作为小例子,讲一下第二个方法。

https://manhua.sfacg.com/mh/YSJ/4519/

我们的目的是获取漫画图片 url,然后下载下来。

Read more »

这篇文章主要讲 MyBatis 的配置Spring MVC 的配置以及 SSM 整合配置。此文章涉及常用的基本设置。

本文章是基于我个人的理解和知识水平,通过查阅资料所写下的笔记总结,主要是方便自己记住常用的基本配置。更详细的知识点请参见文末的参考资料


Read more »

上一篇文章实现了对商品信息的增删查改部分,这篇文章讲用户的登录注册部分。其中部分实现原理跟上文类似。

项目实现

数据库建表及插入数据

1
2
3
4
5
6
7
8
create table user(
id int auto_increment,
name char(30),
pwd char(30),
primary key(id)
);
insert into user (name,pwd) values ('暗夜','137');
insert into user (name,pwd) values ('zero','000');
Read more »

概述

本文讲的是,使用 servlet+jsp+jdbc+mysql 实现一个简单的商品管理系统,不使用任何框架,从而加深自己对 java web 基础知识的理解。

实现的主要功能有:

(1) 对商品信息的增删查改

(2) 用户的登录注册功能

本文主要讲商品信息的增删查改,下一篇文章讲用户的登录注册。


Read more »

Listener 概述

Listener(监听器)用于监听 Java Web 程序中的事件,例如创建、修改、删除 session、request、context 等,并触发相应的事件。利用 Listener 能够用很少的代码实现比较好的效果。


Listener 分类

分类

Servlet 2.5 规范中共有8种 Listener,这8种 Listener 可以分为三类
(1) 监听 session、context、request 等的创建与销毁:HttpSessionListener、ServletContextListener、ServletRequestListener。

Read more »

Filter 常用例子

3. 登录验证 Filter

我们在浏览网站的时候,有时候是没有登录的,或者因为登录很久后自动掉出来。可能有一些请求需要判断用户是否处于登录状态 ,以及该用户的权限。Java Web 程序一般使用 session 或者 cookie 来记录用户是否登录。登录验证 Filter 是将 request 提交给 servlet 之前,对 session 或者 cookie 进行校验。如果没有相应的登录信息,或者权限不够,则进行相应的处理,比如跳转到登录界面。

下面的例子中,我们仅判断用户是否处于登录状态。

Read more »

Filter 概述

Filter(过滤器)用于在 servlet 之外对 request 或者 response 进行拦截、修改,甚至可以拒绝、重定向或者转发 request。Filter 提出了 FilterChain 的概念,一个 FilterChain 包括多个 Filter。客户端请求 request 在抵达 servlet 之前会经过 FilterChain 里的所有 Filter,服务器响应 response 在从 servlet 抵达客户端浏览器之前也会经过 FilterChain 里的所有Filter。Filter处理过程如图所示:

Read more »

ArrayList

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
ArrayList<String> a=new ArrayList<String>();

//add()函数
a.add("a"); //[a]
a.add("b"); //[a, b]
a.add("c"); //[a, b, c]
a.add(1, "d"); //[a, d, b, c]

//contains()
boolean b=a.contains("f"); //false

//get()
String s1=a.get(1); //d
String s2=a.get(5); //运行时抛出IndexOutOfBoundsException

//indexOf()
int i=a.indexOf("a"); //0

//remove()
a.remove("a"); //[d, b, c]
a.remove(1); //[d, c]

//set()
a.set(1,"aaa"); //[d, aaa]

//size()
int si=a.size(); //2

//addAll()
ArrayList<String> a1=new ArrayList<String>();
a1.add("e");
a1.add("f");
a.addAll(a1); //[d, aaa, e, f]

//clear()
a.clear(); //[]

//遍历
for(String s:a){
System.out.println(s);
}
Read more »

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment