1、前期:客户(技术代表,业务代表)完成调研报告,投标1.需求分析阶段。(采用 uml 建模语言,理解需求)人脉,到企业沟通,了解行业和需求上网查这个行业给谁发放,客户是谁。调查用的人,通过岗位了解用例视图就是把你思考过的东西记录下来的视图Actor 参与者(访客,会员,管理员)Package 模块(门户网站,会员自服务系统,后台管理系统)User Case Diagram 用例图(大概画下自己分析的需求)User Case 功能、用例、动词开头(能够做什么,浏览频道)表示谁把信息给谁继承参与者有什么功能以下是用例图,要有自己的项目,不一定是这样的,可以细化用例的简单描述用例文档用例实现顺序图不适
2、合表达复杂的条件转移,只适合表达正常的系统控制流,活动图相当于流程图,适合表达复杂的条件转移,用来描述一个程序的工作流Logical view管理员登陆(顺序图实现)管理员登陆(活动图实现)状态活动,一个动作、一个步骤起点终点 登陆界面-登陆成功从一个环节转到另一个环节一个事件,这个事件完成以后,还是在本动作里面登陆活动图关于分页两个最基本的概念1.要从第几条数据查询 Offset 3.一次性最多查询多少条记录, (每页显示多少行)Pagesize例如(Limit 5,5 从第 5 条记录开始,最多查询 5 个(5,6,7,8,9,10) )Servlet1.知道有多少页 116/52.希望从
3、 rquest 中获得 offset 参数3.希望从 http session 中获得 pagesize网虫开发流程写代码的三个层次(这是我个人总结的,近段时间总觉得代码架构不好,想学习下设计模式)1、 根据用例图写代码(初学者)2、 画出用例图再写代码(能力型)3、 画出用例图,然后选择相应的设计模式去写代码(架构师)根据用例图写代码,这是必须掌握的,所以现在我还是一个看文档写代码的初学者,那现在就一步一步地分析这个用例主要看角色管理员发出的操作第一步是 1:打开文章收集界面业务层 2:查询出所有频道呈现层 4::呈现收集页面代码:ChannelDao channeldao;public v
4、oid setChanneldao(ChannelDao channeldao) this.channeldao = channeldao;/1:打开文章收集界面Overrideprotected void execute(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException / TODO 2:查询出所有的频道PagerVO channelList = channeldao.findChannels();request.setAttribute(“channel
5、List“, channelList);/ TODO 4:呈现收集页面request.getRequestDispatcher(“收集页面“ ).forward(request, response);第二步是 5:收集文章(关键的一步)我要考虑的是1、 收集什么(6:收集文章)2、 怎么收集 【例如 和 两个网站,它们里面的文章结构都不一样(7:根据 URL 选择不同的 Splider) 】3、 返回什么(12:返回相应文章列表)考虑到这里,代码的架构就出来了我这里没 Service 层,暂时 new 出来吧1、 收集什么:代码/* 收集文章(URL和频道),返回相应文章列表* autho
6、r Administrator*/public interface SpliderService /* 收集文章(URL和频道)* return 返回相应文章列表*/public List collect(String url,String channels); public class SpliderServiceImpl implements SpliderService Overridepublic List collect(String url,String channels) / TODO Auto-generated method stubreturn null;/5:收集文章pu
7、blic void collect(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException SpliderService spliderService = new SpliderServiceImpl();/ TODO 6:收集文章(URL和频道)String URL = request.getParameter(“URL“);String channels = (String) request.getParameterMap().get(“Channels“);
8、spliderService.collect(URL,channels);2、 怎么收集:代码(创建不同的 Splider,例如搜集 baidu 里面的文章,就需要创建SpliderImplForBaidu)public abstract class Splider /* return 12:返回相应文章列表*/public List collect()/创建HttpClient/设置代理/执行收集过程execute();/获取收集到的文章/返回文章列表return null;/* 根据相应的URL网址,创建Splider* param URL* return*/public static Splider getInstance(String URL)if URL是““return new SpliderImplForBaidu();public abstract void execute();public class SpliderImplForBaidu extends Splider / TODO 执行收集过程Overridepublic void execute() / TODO Auto-generated method stub