当前位置: 首页 > news >正文

抓取wordpress中的 图片seo公司后付费

抓取wordpress中的 图片,seo公司后付费,电子商务网站建设的结论,电商平台下载目录 一、优化 Dao 1. 设置 UserDaoImpl 为单例模式 2. 创建 Dao 工厂 3. 在 Service 层获取 UserDao 的实例 二、优化 Service 1. 设置 UserServiceImpl 为单例模式 2. 创建 Service 工厂 3. 在 Servlet 层获取 Service 实现类的对象 三、优化 Servlet 1. 使用配置…目录 一、优化 Dao  1. 设置 UserDaoImpl 为单例模式 2. 创建 Dao 工厂 3. 在 Service 层获取 UserDao 的实例 二、优化 Service 1. 设置 UserServiceImpl 为单例模式 2. 创建 Service 工厂 3. 在 Servlet 层获取 Service 实现类的对象 三、优化 Servlet 1. 使用配置文件 1. 创建配置文件 2. 创建工具类 3. 调用工具类获取对象 测试 2. 使用注解的方式 1. 创建自定义注解 2. 使用注解 3. 创建工具类 4. 获取对象 测试 四、作业 1. 绘制架构图 2. 了解 NIO 一、优化 Dao  1. 现在在 Service 层调用Dao层的实现类都要 new 一下这样就会创建很多对象比较占内存比如 Service 层的其他实现类也会调用 UserDao那么只需要创建一次 UserDao 的对象就行了 使用单例模式 2. 既然 Service 层的很多方法可能也会调用UserDao如果以后需要更换 UserDao的实现类那么所有调用 UserDao 的地方都需要修改一下这样比较麻烦 使用工厂模式获取 UserDao 的对象如果要修改只需要在工厂类修改即可 1. 设置 UserDaoImpl 为单例模式 2. 创建 Dao 工厂 用于获取 Dao 的不同实例 3. 在 Service 层获取 UserDao 的实例 二、优化 Service 和 Dao 层同理在 Servlet 层也多次创建了 UserService 的实现类比如登录和修改密码都用到了UserService 1. 设置 UserServiceImpl 为单例模式 2. 创建 Service 工厂 package com.shao.Service;import com.shao.Service.Impl.UserServiceImpl;public class ServiceFactory {public static UserService getUserService() {return UserServiceImpl.getInstance();} }3. 在 Servlet 层获取 Service 实现类的对象 三、优化 Servlet 现在的情况是当 Tomcat 接收一个请求后会先判断是请求的静态资源还是动态资源如果是动态资源还要继续判断请求的是哪个功能然后调用相应的 Servlet 执行 这样有些缺点当功能很多时一个个判断请求的是哪个功能效率不高而且代码不够优雅并且来一个请求就会创建一下 Servlet 对象比较消耗资源那如何解决呢 解决方案是我们先把所有的 Servlet 对象创建好然后放到一个容器集合里当有请求时取出对应的 Servlet 对象执行。这是不是很熟悉的感觉池化思想 那么问题来了系统怎么知道哪些 Servlet 需要创建对象 1. 使用配置文件 把要创建的 Servlet 的全类名放到配置文件然后读取配置文件通过反射技术创建对象 1. 创建配置文件 2. 创建工具类 package com.shao.Utils;import com.shao.Servlet.BaseServlet;import java.io.File; import java.io.FileInputStream; import java.util.HashMap; import java.util.Properties; import java.util.Set;public class ServletUtil {// 获取当前系统分隔符final static String FENGEFU File.separator;// 存放 Servlet 对象static HashMapString, BaseServlet map new HashMap();// 读取配置文件的内容static Properties properties new Properties();static {try {properties.load(new FileInputStream(config FENGEFU Servlet.properties));// 把 Key 放到集合中SetObject keySet properties.keySet();for (Object key : keySet) {String value properties.getProperty(key.toString());// 通过全类名获取 Class 对象Class 对象记录了这个类的全部信息Class? aClass Class.forName(value);/** 底层原理* 1. 调用构造器通过 Class 对象找到对应类型的无参构造器* 2. 实例化对象使用构造器创建一个新的对象实例* 3. 返回实例* */BaseServlet baseServlet (BaseServlet) aClass.newInstance();// 添加到 map 集合map.put(key.toString(), baseServlet);}} catch (Exception e) {e.printStackTrace();}}// 对外提供一个接口获取集合中 key 对应的 value value 是 Servlet 对象public static BaseServlet getServletClass(String key) {return map.get(key);}}3. 调用工具类获取对象 在响应类调用 ServletUtil 获取Servlet 实例 package com.shao.net;import com.alibaba.fastjson2.JSON; import com.shao.Servlet.BaseServlet; import com.shao.Servlet.ChangePasswordServlet; import com.shao.Servlet.LoginServlet; import com.shao.Utils.DBConnectUtil; import com.shao.Utils.ServletUtil; import com.shao.Utils.responseDTO;import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.sql.*;public class HttpResponse {/*** 输出流*/private OutputStream os;/*** 解析请求信息的对象*/private HttpRequest httpRequest;public HttpResponse(OutputStream os, HttpRequest httpRequest) {this.os os;this.httpRequest httpRequest;}public void response(String filePath) {//判断请求的是否为静态文件if (StaticResourceHandler.isLikelyStaticResource(httpRequest.getRequestModule())) {// 获取静态资源一般是 GET 请求方法if (httpRequest.getRequestMethod().equals(GET)) {// 响应静态资源responseStaticResource(filePath);}} else {// 处理动态请求System.out.println(请求动态资源);// 获取 Servlet 对象参数是请求的模块名BaseServlet servlet ServletUtil.getServletClass(httpRequest.getRequestModule());// 如果没有找到对应的 Servlet 返回 404if (servlet null) {responseStaticResource(webs/pages/not_Found404.html);return;}// 调用 service 方法servlet.service(httpRequest, this);// if (httpRequest.getRequestModule().equals(/doLogin)) { // // // 创建 登录的 Servlet 对象 // LoginServlet loginServlet new LoginServlet(); // // // 调用 service 方法响应数据也封装在 servlet 里 // loginServlet.service(httpRequest, this); // // // } else if (/ChangePassword.equals(httpRequest.getRequestModule())) { // // ChangePasswordServlet servlet new ChangePasswordServlet(); // // servlet.service(httpRequest, this); // } else if (/test.equals(httpRequest.getRequestModule())) { // send(JSON.toJSONBytes(new responseDTO(200, ok, test))); // }}}/*** 响应静态资源*/private void responseStaticResource(String filePath) {// 读取文件byte[] fileContents StaticResourceHandler.getFileContents(filePath);// 判断文件是否存在不存在则返回 404 的页面if (fileContents null) {try {FileInputStream fis new FileInputStream(webs/pages/not_Found404.html);fileContents new byte[fis.available()];fis.read(fileContents);fis.close();} catch (Exception e) {e.printStackTrace();}}// 响应协议String protocol httpRequest.getRequestProtocol();// 文件媒体类型String fileMimeType StaticResourceHandler.getFileMimeType(filePath);try {os.write((protocol 200 OK\r\n).getBytes());os.write((Content-Type: fileMimeType \r\n).getBytes());os.write((Content-Length: fileContents.length \r\n).getBytes());os.write(\r\n.getBytes());os.write(fileContents);os.flush();System.out.println(响应成功);os.close();} catch (IOException e) {e.printStackTrace();}}public void send(byte[] content) {// 获取请求协议String protocol httpRequest.getRequestProtocol();try {os.write((protocol 200 OK\r\n).getBytes());os.write((Content-Type: text/html;charsetutf-8 \r\n).getBytes());os.write((Content-Length: content.length \r\n).getBytes());os.write(\r\n.getBytes());os.write(content);os.flush();System.out.println(响应成功);os.close();} catch (IOException e) {e.printStackTrace();}} }测试 2. 使用注解的方式 在需要创建的 Servlet 的类名上加上自定义注解然后通过反射技术创建对象 1. 创建自定义注解 package com.shao.Annotation;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) public interface MyServlet {String value(); }2. 使用注解 3. 创建工具类 package com.shao.Utils;import com.shao.Annotation.MyServlet; import com.shao.Servlet.BaseServlet;import java.io.File; import java.net.URISyntaxException; import java.net.URL; import java.util.HashMap;public class ServletByAnnoUtil {// 存放 Servlet 对象private static HashMapString, BaseServlet map new HashMap();// 要扫描包的路径private static String PackagePath com.shao.Servlet;static {// 获取类加载器ClassLoader classLoader ServletByAnnoUtil.class.getClassLoader();// 获取包的完整路径URL resource classLoader.getResource(PackagePath.replace(., /));if (resource null) {throw new RuntimeException(Package path not found PackagePath);}try {// 创建目录对象File packageDir new File(resource.toURI());// 获取目录下所有文件File[] files packageDir.listFiles();/** 1. 判断文件是否为 .class 文件* 2. 获取文件名去掉 .class 后缀* 3. 包路径 文件名拼接成全类名* 4. 获取 Class 对象* 5. 判断 Class 对象是否有 MyServlet 注解* 6. 如果有判断是否 BaseServlet 类或者继承 BaseServlet* 7. 创建对象获取注解的值存放到 map 中** */for (File file : files) {if (file.getName().endsWith(.class)) {// 获取全类名String className PackagePath . file.getName().substring(0, file.getName().lastIndexOf(.));// 获取 Class 对象Class? aClass Class.forName(className);// 判断是否有 MyServlet 注解if (aClass.isAnnotationPresent(MyServlet.class)) {// 判断是否继承 BaseServletif (BaseServlet.class.isAssignableFrom(aClass)) {// 创建对象BaseServlet servlet (BaseServlet) aClass.newInstance();// 获取注解的值MyServlet annotation aClass.getAnnotation(MyServlet.class);map.put(annotation.value(), servlet);}}}}} catch (URISyntaxException | ClassNotFoundException | InstantiationException | IllegalAccessException e) {throw new RuntimeException(e);}}// 对外提供一个接口获取 Servlet 对象public static BaseServlet getServletClass(String key) {return map.get(key);} }4. 获取对象 测试 四、作业 1. 绘制架构图 2. 了解 NIO
http://www.tj-hxxt.cn/news/234270.html

相关文章:

  • wordpress建站好吗荣耀手机品牌介绍
  • 景德镇市建设厅网站wordpress centos安装教程
  • 关于建设设计院公司网站的建议中山网站建设企业
  • 怎么样在网站上做跳转wordpress官网入口
  • 腾讯云可以做网站吗网页设计作业分析文档
  • 合肥做网站哪家好公司网站建设佛山哪家专业
  • 一个人能建网站吗阿里巴巴网站建设
  • 常州建站价格国外浏览器搜索引擎入口
  • 济南网站建设网站制作电商外贸有什么平台
  • 学雷锋做美德少年网站宿迁企业网站建设
  • 河南品牌网站建设做一个15页的网站怎么做
  • 做头像一个字的网站沈阳做网站哪好
  • 纯静态网站模板网站站制做
  • 猪八戒里面做网站骗子很多河池网站建设公司
  • 网站源码 com大全怎样建设公司的网站
  • 免费广告平台百度seo关键词优化电话
  • 网站网页建设与制作怎么做账如何建立免费的网站
  • 企业网站开发效果网络宣传平台有哪些
  • 专业提供网站建设服务的企业网站开发和前端是一样吗
  • 网站怎么用ftp修改网页内容哪些动物可以做网站名
  • 安定网站建设做网站能申报只是产权么
  • 网站建设哪个制作英文网站案例
  • 优化网站性能监测什么网站上面能接点小活做
  • 深圳沙井做公司网站机械工业第六设计研究院有限公司
  • 毕业设计网站设计步骤网站备案核验单怎么选
  • 外汇网站源码 asp唐山正规做网站的公司
  • 可以免费秒玩游戏的网站wordpress子主题插件
  • 焦作做网站推广无忧网站建设推荐
  • 网站备案接入服务单位校园生活网页设计
  • 备案注销网站还有吗互联网公司的招聘信息