当前位置:首页 > Java > Javapdf电子书下载
《Java高手真经应用框架卷:Java Web核心框架》电子书封面

Java高手真经应用框架卷:Java Web核心框架

  • 发布时间:2021年03月27日 10:53:30
  • 作者:刘中兵Java研究室
  • 大小:150.76MB
  • 类别:Java电子书
  • 格式:PDF
  • 版本:超清版
  • 评分:7.1

    Java高手真经应用框架卷:Java Web核心框架 PDF 超清版

      给大家带来的一篇关于Java相关的电子书资源,介绍了关于Java、Web核心框架方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小150.76MB,刘中兵Java研究室编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:9.9分

      Tags:java Web核心框架 

      内容介绍

      Java高手真经:Java Web核心框架(应用框架卷)

      作者:刘中兵Java研究室 编著

      出版时间:2009-3-1

      【图书简介】

      本书首先分析了Java Web应用的分层设计方法,并进行应用框架的选型,然后讲解各种Java Web应用框架、集成技术、实战开发。主要内容包括如下。持久层框架Hibernate:讲解Hibernate入门与核心技术,分别实现MySQL、Oracle、SQL Server数据库的信息系统开发。持久层框架iBATIS:讲解iBATIS入门与核心技术,分别实现MySQL、Oracle、SQLServer数据库的信息系统开发。表现层框架Struts l:讲解Struts l 的入门配置、核心组件、标签库、国际化、数据校验、Sitemesh集成、数据库开发技术,并分别实现与Hibernate、iBATIS持久层框架的集成开发。表现层框架Struts 2:讲解Struts 2的入门配置、核心组件、标签库、国际化、数据校验、转换器、拦截器,并分别实现与Hibernate、iBATIS持久层框架的集成开发。业务层框架Sprin9:讲解Sprin9的入门配置与IoC容器,并讲解使用Sprin9进行MVC应用开发的标签库、国际化、数据校验、数据库开发技术。多层框架集成:实现5种框架的搭配集成,分别实现SSH l、SSI 1、SSH 2、SSI 2集成框架的开发。随书附赠光盘内容为本书各种原型包、系统源程序。本书内容循序渐进,通俗易懂,覆盖了Java Web开发的最流行框架技术。无论对于Java软件设计还是软件开发,本书都是精通开发Java Web应用的必备的实用手册。本书适合作为Java相关培训机构的教材,也可作为Java自学人员的参考手册。

      【本书目录】

      • 绪论Java Web分层设计与框架选型
      • 第1部分准备篇
      • 第1课构建Eclipse集成开发环境
      • 第2课创建企业信息管理系统数据库
      • 第2部分持久层框架Hibernate
      • 第3课Hibernate快速入门
      • 第4课Hibernate核心技术详解
      • 第5课Hibernate项目实践——企业信息管理系统MySQL数据库开发
      • 第6课Hibernate项目实战——企业信息管理系统Oracle数据库开发
      • 第7课Hibernate项目实战——企业信息管理系统SQL Server数据库开发
      • 第3部分持久层框架iBATLS
      • 第8课iBATLS快速入门
      • 第9课iBATLS核心技术详解
      • 第10课iBATLS代码生成工具iBATLS
      • 第11课iBATLS项目实战——企业信息管理系统MySQL数据库开发
      • 第12课iBATLS项目实践——企业信息管理系统Oracle数据库开发
      • 第13课iBATLS项目实践——企业信息管理系统SQL Server数据库开发
      • 第4部分表现层框架Struts 1+Hibernate/BATIS
      • 第14课Struts快速入门
      • 第15课Struts核心组件详解
      • 第16课Struts标签库详解
      • 第17课Struts应用国际化
      • 第18课Struts数据校险
      • 第19课Struts与SiteMesh集成
      • 第20课Struts访问数据库
      • 第21课Struts项目实战——企业信息管理系统Struts 1+Hibernate实现
      • 第22课Struts项目实践——企业信息管理系统Struts+iBATIS实现
      • 第5部分表现层框架Struts2+Hibernate/iBATIS
      • 第23课Struts 2快速入门
      • 第24课Struts 2核心组件详解
      • 第25课Struts 2标签库详解
      • 第26课Struts 2应用国际化
      • 第27课Struts 2数据校验
      • 第28课Struts 2数据转换器
      • 第29课Struts 2拦截器
      • 第30课Struts 2项目实战——企业信息
      • 第31课Struts 2项目实战——企业信息管理系统Struts 2+iBATIS实现
      • 第6部分Spring快速入门
      • 第32课 Spring快速入门
      • 第33课Spring用做IoC容器
      • 第34课Spring用作MVC框架
      • 第35课Spring标签库
      • 第36课Spring应用国际化
      • 第37课Spring数据校验

      读书笔记

      Java/Web调用Hadoop进行MapReduce示例代码

      Hadoop环境搭建详见此文章//www.jb51.net/article/33649.htm。

      我们已经知道Hadoop能够通过Hadoop jar ***.jar input output的形式通过命令行来调用,那么如何将其封装成一个服务,让Java/Web来调用它?使得用户可以用方便的方式上传文件到Hadoop并进行处理,获得结果。首先,***.jar是一个Hadoop任务类的封装,我们可以在没有jar的情况下运行该类的main方法,将必要的参数传递给它。input 和output则将用户上传的文件使用Hadoop的JavaAPI put到Hadoop的文件系统中。然后再通过Hadoop的JavaAPI 从文件系统中取得结果文件。

      搭建JavaWeb工程。本文使用Spring、SpringMVC、MyBatis框架, 当然,这不是重点,就算没有使用任何框架也能实现。

      项目框架如下:

      Java/Web调用Hadoop进行MapReduce示例代码

      项目中使用到的jar包如下:

      Java/Web调用Hadoop进行MapReduce示例代码Java/Web调用Hadoop进行MapReduce示例代码

      在Spring的配置文件中,加入

      <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
         <property name="defaultEncoding" value="utf-8" /> 
         <property name="maxUploadSize" value="10485760000" /> 
         <property name="maxInMemorySize" value="40960" /> 
      </bean> 
      

      使得项目支持文件上传。

      新建一个login.jsp 点击登录后进入user/login

      Java/Web调用Hadoop进行MapReduce示例代码

      user/login中处理登录,登录成功后,【在Hadoop文件系统中创建用户文件夹】,然后跳转到console.jsp

      package com.chenjie.controller; 
       
      import java.io.IOException; 
        
      import javax.annotation.Resource; 
       
      import javax.servlet.http.HttpServletRequest; 
       
      import javax.servlet.http.HttpServletResponse; 
       
      import org.apache.hadoop.conf.Configuration; 
       
      import org.apache.hadoop.fs.FileSystem; 
       
      import org.apache.hadoop.fs.Path; 
       
      import org.springframework.stereotype.Controller; 
       
      import org.springframework.web.bind.annotation.RequestMapping; 
      
      import com.chenjie.pojo.JsonResult; 
       
      import com.chenjie.pojo.User; 
       
      import com.chenjie.service.UserService; 
       
      import com.chenjie.util.AppConfig; 
       
      import com.google.gson.Gson; 
      /** 
       
       * 用户请求控制器 
       
       * 
       
       * @author Chen 
       
       * 
       
       */ 
       
      @Controller 
       
      // 声明当前类为控制器 
       
      @RequestMapping("/user") 
       
      // 声明当前类的路径 
       
      public class UserController { 
       
        @Resource(name = "userService") 
       
        private UserService userService;// 由Spring容器注入一个UserService实例 
        /** 
       
         * 登录 
       
         * 
       
         * @param user 
       
         *      用户 
       
         * @param request 
       
         * @param response 
       
         * @throws IOException 
       
         */ 
       
        @RequestMapping("/login") 
       
        // 声明当前方法的路径 
       
        public String login(User user, HttpServletRequest request, 
       
            HttpServletResponse response) throws IOException { 
       
          response.setContentType("application/json");// 设置响应内容格式为json 
       
          User result = userService.login(user);// 调用UserService的登录方法 
       
          request.getSession().setAttribute("user", result); 
       
          if (result != null) { 
       
            createHadoopFSFolder(result); 
       
            return "console"; 
       
          } 
       
          return "login"; 
       
        } 
       
        public void createHadoopFSFolder(User user) throws IOException { 
       
          Configuration conf = new Configuration(); 
       
          conf.addResource(new Path("/opt/hadoop-1.2.1/conf/core-site.xml")); 
       
          conf.addResource(new Path("/opt/hadoop-1.2.1/conf/hdfs-site.xml")); 
       
       
       
          FileSystem fileSystem = FileSystem.get(conf); 
       
          System.out.println(fileSystem.getUri()); 
       
       
       
          Path file = new Path("/user/" + user.getU_username()); 
       
          if (fileSystem.exists(file)) { 
       
            System.out.println("haddop hdfs user foler exists."); 
       
            fileSystem.delete(file, true); 
       
            System.out.println("haddop hdfs user foler delete success."); 
       
          } 
       
          fileSystem.mkdirs(file); 
       
          System.out.println("haddop hdfs user foler creat success."); 
       
        } 
      } 
      

      console.jsp中进行文件上传和任务提交、

      Java/Web调用Hadoop进行MapReduce示例代码

      文件上传和任务提交:

      package com.chenjie.controller; 
       
      import java.io.File; 
      import java.io.IOException; 
      import java.net.InetSocketAddress; 
      import java.net.URI; 
      import java.util.ArrayList; 
      import java.util.Iterator; 
      import java.util.List; 
       
      import javax.servlet.http.HttpServletRequest; 
      import javax.servlet.http.HttpServletResponse; 
       
      import org.apache.hadoop.conf.Configuration; 
      import org.apache.hadoop.fs.FSDataInputStream; 
      import org.apache.hadoop.fs.FileSystem; 
      import org.apache.hadoop.fs.Path; 
      import org.apache.hadoop.mapred.JobClient; 
      import org.apache.hadoop.mapred.JobConf; 
      import org.apache.hadoop.mapred.JobID; 
      import org.apache.hadoop.mapred.JobStatus; 
      import org.apache.hadoop.mapred.RunningJob; 
      import org.springframework.stereotype.Controller; 
      import org.springframework.web.bind.annotation.RequestMapping; 
      import org.springframework.web.multipart.MultipartFile; 
      import org.springframework.web.multipart.MultipartHttpServletRequest; 
      import org.springframework.web.multipart.commons.CommonsMultipartResolver; 
       
      import com.chenjie.pojo.User; 
      import com.chenjie.util.Utils; 
       
      @Controller 
      // 声明当前类为控制器 
      @RequestMapping("/hadoop") 
      // 声明当前类的路径 
      public class HadoopController { 
       
        @RequestMapping("/upload") 
        // 声明当前方法的路径 
        //文件上传 
        public String upload(HttpServletRequest request, 
            HttpServletResponse response) throws IOException { 
          List<String> fileList = (List<String>) request.getSession() 
              .getAttribute("fileList");//得到用户已上传文件列表 
          if (fileList == null) 
            fileList = new ArrayList<String>();//如果文件列表为空,则新建 
          User user = (User) request.getSession().getAttribute("user"); 
          if (user == null) 
            return "login";//如果用户未登录,则跳转登录页面 
          CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver( 
              request.getSession().getServletContext());//得到在Spring配置文件中注入的文件上传组件 
          if (multipartResolver.isMultipart(request)) {//如果请求是文件请求 
            MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; 
       
            Iterator<String> iter = multiRequest.getFileNames();//得到文件名迭代器 
            while (iter.hasNext()) { 
              MultipartFile file = multiRequest.getFile((String) iter.next()); 
              if (file != null) { 
                String fileName = file.getOriginalFilename(); 
                File folder = new File("/home/chenjie/CJHadoopOnline/" 
                    + user.getU_username()); 
                if (!folder.exists()) { 
                  folder.mkdir();//如果文件不目录存在,则在服务器本地创建 
                } 
                String path = "/home/chenjie/CJHadoopOnline/" 
                    + user.getU_username() + "/" + fileName; 
       
                File localFile = new File(path); 
       
                file.transferTo(localFile);//将上传文件拷贝到服务器本地目录 
                // fileList.add(path); 
              } 
              handleUploadFiles(user, fileList);//处理上传文件 
            } 
       
          } 
          request.getSession().setAttribute("fileList", fileList);//将上传文件列表保存在Session中 
          return "console";//返回console.jsp继续上传文件 
        } 
       
        @RequestMapping("/wordcount") 
        //调用Hadoop进行mapreduce 
        public void wordcount(HttpServletRequest request, 
            HttpServletResponse response) { 
          System.out.println("进入controller wordcount "); 
          User user = (User) request.getSession().getAttribute("user"); 
          System.out.println(user); 
          // if(user == null) 
          // return "login"; 
          WordCount c = new WordCount();//新建单词统计任务 
          String username = user.getU_username(); 
          String input = "hdfs://chenjie-virtual-machine:9000/user/" + username 
              + "/wordcountinput";//指定Hadoop文件系统的输入文件夹 
          String output = "hdfs://chenjie-virtual-machine:9000/user/" + username 
              + "/wordcountoutput";//指定Hadoop文件系统的输出文件夹 
          String reslt = output + "/part-r-00000";//默认输出文件 
          try { 
            Thread.sleep(3*1000); 
            c.main(new String[] { input, output });//调用单词统计任务 
            Configuration conf = new Configuration();//新建Hadoop配置 
            conf.addResource(new Path("/opt/hadoop-1.2.1/conf/core-site.xml"));//添加Hadoop配置,找到Hadoop部署信息 
            conf.addResource(new Path("/opt/hadoop-1.2.1/conf/hdfs-site.xml"));//Hadoop配置,找到文件系统 
       
            FileSystem fileSystem = FileSystem.get(conf);//得打文件系统 
            Path file = new Path(reslt);//找到输出结果文件 
            FSDataInputStream inStream = fileSystem.open(file);//打开 
            URI uri = file.toUri();//得到输出文件路径 
            System.out.println(uri); 
            String data = null; 
            while ((data = inStream.readLine()) != null) { 
              //System.out.println(data); 
              response.getOutputStream().println(data);//讲结果文件写回用户网页 
            } 
      //     InputStream in = fileSystem.open(file); 
      //     OutputStream out = new FileOutputStream("result.txt"); 
      //     IOUtils.copyBytes(in, out, 4096, true); 
            inStream.close(); 
          } catch (Exception e) { 
            System.err.println(e.getMessage()); 
          } 
        } 
       
        @RequestMapping("/MapReduceStates") 
        //得到MapReduce的状态 
        public void mapreduce(HttpServletRequest request, 
            HttpServletResponse response) { 
          float[] progress=new float[2]; 
          try { 
            Configuration conf1=new Configuration(); 
            conf1.set("mapred.job.tracker", Utils.JOBTRACKER); 
             
            JobStatus jobStatus = Utils.getJobStatus(conf1); 
      //     while(!jobStatus.isJobComplete()){ 
      //       progress = Utils.getMapReduceProgess(jobStatus); 
      //       response.getOutputStream().println("map:" + progress[0] + "reduce:" + progress[1]); 
      //       Thread.sleep(1000); 
      //     } 
            JobConf jc = new JobConf(conf1); 
             
            JobClient jobClient = new JobClient(jc); 
            JobStatus[] jobsStatus = jobClient.getAllJobs();  
            //这样就得到了一个JobStatus数组,随便取出一个元素取名叫jobStatus  
            jobStatus = jobsStatus[0];  
            JobID jobID = jobStatus.getJobID(); //通过JobStatus获取JobID  
            RunningJob runningJob = jobClient.getJob(jobID); //通过JobID得到RunningJob对象  
            runningJob.getJobState();//可以获取作业状态,状态有五种,为JobStatus.Failed 、JobStatus.KILLED、JobStatus.PREP、JobStatus.RUNNING、JobStatus.SUCCEEDED  
            jobStatus.getUsername();//可以获取运行作业的用户名。  
            runningJob.getJobName();//可以获取作业名。  
            jobStatus.getStartTime();//可以获取作业的开始时间,为UTC毫秒数。  
            float map = runningJob.mapProgress();//可以获取Map阶段完成的比例,0~1,  
            System.out.println("map=" + map); 
            float reduce = runningJob.reduceProgress();//可以获取Reduce阶段完成的比例。 
            System.out.println("reduce="+reduce); 
            runningJob.getFailureInfo();//可以获取失败信息。  
            runningJob.getCounters();//可以获取作业相关的计数器,计数器的内容和作业监控页面上看到的计数器的值一样。  
             
             
          } catch (IOException e) { 
            progress[0] = 0; 
            progress[1] = 0; 
          } 
         
          request.getSession().setAttribute("map", progress[0]); 
          request.getSession().setAttribute("reduce", progress[1]); 
        } 
         
        //处理文件上传 
        public void handleUploadFiles(User user, List<String> fileList) { 
          File folder = new File("/home/chenjie/CJHadoopOnline/" 
              + user.getU_username()); 
          if (!folder.exists()) 
            return; 
          if (folder.isDirectory()) { 
            File[] files = folder.listFiles(); 
            for (File file : files) { 
              System.out.println(file.getName()); 
              try { 
                putFileToHadoopFSFolder(user, file, fileList);//将单个文件上传到Hadoop文件系统 
              } catch (IOException e) { 
                System.err.println(e.getMessage()); 
              } 
            } 
          } 
        } 
       
        //将单个文件上传到Hadoop文件系统 
        private void putFileToHadoopFSFolder(User user, File file, 
            List<String> fileList) throws IOException { 
          Configuration conf = new Configuration(); 
          conf.addResource(new Path("/opt/hadoop-1.2.1/conf/core-site.xml")); 
          conf.addResource(new Path("/opt/hadoop-1.2.1/conf/hdfs-site.xml")); 
       
          FileSystem fileSystem = FileSystem.get(conf); 
          System.out.println(fileSystem.getUri()); 
       
          Path localFile = new Path(file.getAbsolutePath()); 
          Path foler = new Path("/user/" + user.getU_username() 
              + "/wordcountinput"); 
          if (!fileSystem.exists(foler)) { 
            fileSystem.mkdirs(foler); 
          } 
           
          Path hadoopFile = new Path("/user/" + user.getU_username() 
              + "/wordcountinput/" + file.getName()); 
      //   if (fileSystem.exists(hadoopFile)) { 
      //     System.out.println("File exists."); 
      //   } else { 
      //     fileSystem.mkdirs(hadoopFile); 
      //   } 
          fileSystem.copyFromLocalFile(true, true, localFile, hadoopFile); 
          fileList.add(hadoopFile.toUri().toString()); 
       
        } 
       
      } 
      

      启动Hadoop:

      Java/Web调用Hadoop进行MapReduce示例代码

      运行结果:

      可以在任意平台下,登录该项目地址,上传文件,得到结果。

      Java/Web调用Hadoop进行MapReduce示例代码

      Java/Web调用Hadoop进行MapReduce示例代码


      Java/Web调用Hadoop进行MapReduce示例代码

      Java/Web调用Hadoop进行MapReduce示例代码

      Java/Web调用Hadoop进行MapReduce示例代码

      Java/Web调用Hadoop进行MapReduce示例代码

      运行成功。

      源代码:https://github.com/tudoupaisimalingshu/CJHadoopOnline

      以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

      以上就是本次介绍的Java电子书的全部相关内容,希望我们整理的资源能够帮助到大家,感谢大家对码农之家的支持。

      上一篇:JAVA核心技术卷2:高级特征(第8版)

      下一篇:Java高手真经系统架构卷:Java Web系统设计与架构

      查看更多
      Java 相关电子书
      Java Web企业项目实战
      Java Web企业项目实战 PDF 高清版

      《Java Web 企业项目实战》 本书通过项目实战的方式详细介绍了新版的Java Web应用的开发技术。本书的重点放在了JSP的基础知识和实际应用方面,注重理论与实践相结合。书中的项目来源于作者

      立即下载
      Java Web应用详解
      Java Web应用详解 PDF 完整版

      这本书以网络留言板开发为主线将JavaWeb知识融会贯通,知识模块完整,通过静态网页篇、动态网站篇、系统框架篇、项目实战篇循序渐进地使学生全面掌握JavaWeb开发技术,欢迎下载

      立即下载
      Java Web开发实例大全:基础卷
      Java Web开发实例大全:基础卷 PDF 原书扫描版

      本书筛选、汇集了Java Web开发从基础知识到高级应用各个层面约600个实例及源代码,主要内容有开发环境搭建、Java语言基础、HTML/CSS技术、JSP基础与内置对象、JavaBean技术、Servlet技术、过滤器与监听器技术、JSTL标签库

      立即下载
      软件开发综合实践指导教程:JAVA WEB应用
      软件开发综合实践指导教程:JAVA WEB应用 PDF 高清版

      Java Web应用技术是当今最主流的Web程序开发技术之一。目前无论是高校的计算机专业,还是IT培训学校都将Java Web应用技术作为教学内容之一,这对于培养学生的计算机应用能力具有重要的意义

      立即下载
      Java Web应用程序开发
      Java Web应用程序开发 PDF 超清原版

      《企业级卓越人才培养(信息类专业集群)解决方案十三五规划教材:Javaweb应用程序开发》通过对JAVAweb相关知识的介绍,学习IO流、JDBC、Web服务器、JSP页面以及对JSP内置对象等内容,每个知识点后

      立即下载
      读者心得
      168小时41分钟前回答

      Java 获取Web项目相对webapp地址的实例

      实例如下: ServletRequestAttributes aRequestAttributes=(ServletRequestAttributes)RequestContextHolder.getRequestAttributes(); HttpServletRequest request =aRequestAttributes==null?null:aRequestAttributes.getRequest(); String webpath=request.getServletContext().getRealPath("/"); 以上这篇Java 获取Web项目相对webapp地址的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。 ……

      123小时46分钟前回答

      j2ee开发中的“java容器”和“web容器”有什么区别

      容器是一种服务调用规范框架,J2EE 大量运用了容器和组件技术来构建分层的企业级应用。在 J2EE 规范中,相应的有 WEBContainer 和 EJB Container 等。 Web容器 给处于其中的应用程序组件(JSP、Servlet)提供一个环境,使得JSP,Servlet能直接和容器中的环境变量、接口交互而不必关注其他系统问题。主要是由Web服务器来实现,例如Tomcat、WebLogic和Websphere等。该容器提供的接口严格遵守J2EE规范中的Web Application标准。我们把遵守以上标准的Web服务器就叫做J2EE中的Web容器。 JAVA内部的容器类 Java容器类包含List、ArrayList、Vector及map、HashTable、HashMap 。 ArrayList和HashMap是异步的,Vector和HashTable是同步的,所以Vector和HashTabl……

      115小时24分钟前回答

      JavaWeb项目中dll文件动态加载方法解析(详细步骤)

      相信很多做Java的朋友都有过用Java调用JNI实现调用C或C++方法的经历,那么Java Web中又如何实现DLL/SO文件的动态加载方法呢。今天就给大家带来一篇JAVA Web项目中DLL/SO文件动态加载方法的文章。 在Java Web项目中,我们经常会用到通过JNI调用dll动态库文件来实现一些JAVA不能实现的功能,或者是一些第三方dll插件。通常的做法是将这些dll文件复制到 %JAVA_HOME%\jre\bin\ 文件夹或者 应用中间件(Tomcat|Weblogic)的bin目录下之后,在程序中才能正常使用。但是这个步骤在项目实施或移植时经常会被忘记,比较麻烦,所以就考虑能否在项目运行过程中动态加载,而不需要再手动复制这些文件。在网上找了很多资料,大部……

      码农之家

      莘弘懿 提供上传

      资源
      23
      粉丝
      3
      喜欢
      172
      评论
      3

      Copyright 2018-2021 www.xz577.com 码农之家

      版权投诉 / 书籍推广:520161757@qq.com