精华内容
下载资源
问答
  • java+web+批量下载文件

    2019-08-28 17:12:01
    web.xml - /demo/WebContent/WEB-INF/web.xml <web-app xmlns:xsi=...

    JavaWeb 文件下载功能

    文件下载的实质就是文件拷贝,将文件从服务器端拷贝到浏览器端,所以文件下载需要IO技术将服务器端的文件读取到,然后写到response缓冲区中,然后再下载到个人客户端。

    1. 文件名 - 接受前端发来的文件名

    获取到前端页面发送过来的要下载的文件的名字

    String filenameValue = req.getParameter("filename");
    

    2. ServletContext域 - 获取到ServletContext域对象

    后面将调用此对象的一系列方法,用于获取文件路径、文件MimeType,并设置文件输出类型

    ServletContext servletContext = req.getServletContext();  //获取到ServletContext域对象
    

    3. 文件路径 - 获取指定文件在web项目中的路径

    通过获取到ServletContext域对象的getRealPath()方法,读取download目录下文件的绝对路径

    注意:download目录必须放在webContent目录下面,否则可能会找不到,导致报异常,在读取资源的时候,项目demo会直接去查找webContent下面的文件和文件夹

    String realPath = servletContext.getRealPath("download/"+filenameValue);  //获取到要下载文件在web项目中的绝对路径
    

    4. 文件MimeType - 获取文件的MimeType类型

    通过获取到的 ServletContext 域对象的 getMimeType() 方法,获取到文件MimeType

    告知浏览器文件的类型:response.setContentType(文件的MIME类型);

    String mimeType = servletContext.getMimeType(filenameValue);  //获取到要下载文件的mimeType类型
    

    5. 输出类型 - 设置文件的输出类型

    根据之前获取到的文件MimeType,然后通过 Response 域对象的 setContentType() 方法,设置文件的输出类型

    resp.setContentType(mimeType);  //设置文件的输出类型
    

    6. 设置响应头 - 确定文件是内嵌或弹出下载框

    通过 Response 域对象的 setHeader("Content-Disposition","attachment;filename="+filename) 方法设置响应头

    • Content-Disposition(内容处置/处理)

      是 MIME 协议的扩展,Content-Disposition 可以控制用户请求所得的内容存为一个文件时提供一个默认的文件名

    • inline 和 attachment:文件直接在浏览器上显示或者在访问时弹出文件下载对话框。

      inline 表示:内嵌显示,文本和图片都可以解析,但对于文件或者视频会自动去调用成attachment,因此可以直接使用inline

      attachment:弹出下载框,因为attachment是让文件以附件的形式打开,因此会调用下载,但此下载的功能并没有提示

    //设置输出(下载)的文件的默认文件名为filenameValue的值,inline表示内嵌文本和图片,文件和视频会自动调用成attachment
    resp.setHeader("Content-Disposition", "inline;filename="+filenameValue); 
    

    7. 执行输出(下载) - IO流

    7.1 通过 new,创建字节输入流 FileInputStream,读取文件

    7.2 通过Response域,创建Servlet的输出流,输出文件

    FileInputStream fileInputStream = new FileInputStream(realPath);
    ServletOutputStream  outputStream = resp.getOutputStream();
    int b=0;
    byte[] by = new byte[1024*8];
    while ((b=fileInputStream.read(by))!=-1) {
      outputStream.write(by, 0, b);
    }
    outputStream.flush();
    fileInputStream.close();
    outputStream.close();  //关流,response获得流会自动关闭,因此也可以不用手动关
    

    功能实现代码

    Java 代码 - /demo/src/com/Download.java

    package com;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.net.URLEncoder;
    
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class Download extends HttpServlet{
        @Override
        public void init(ServletConfig config) throws ServletException {
            /**重写了Servlet的init(ServletConfig config)方法后一定要记得调用父类的init方法,
             * 否则在service/doGet/doPost方法中使用getServletContext()方法获取ServletContext对象时
             * 就会出现java.lang.NullPointerException异常
             * */
            super.init(config);
        }
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doPost(req, resp);
        }
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            
            /**1. 接受前端页面发送过来的文件名字
             * 获取到前端页面发送过来的要下载的文件的名字
             * */
            String filenameValue = req.getParameter("filename");
            //---------------------
    //      filenameValue = URLEncoder.encode(filenameValue, "gbk");
            /**2. 获取到ServletContext域对象
             * 后面将调用此对象的一系列方法,用于获取文件路径、文件MimeType、文件输出类型
             * */
            ServletContext servletContext = req.getServletContext();  //获取到ServletContext域对象
            /**3. 获取指定文件在web项目中的路径
             * 通过获取到ServletContext域对象的getRealPath()方法,读取download目录下文件的绝对路径
             * download目录必须放在webContent目录下面,否则可能会找不到,导致报异常,
             * 在读取资源的时候,项目demo会直接去查找webContent下面的文件和文件夹
             * */
            String realPath = servletContext.getRealPath("download/"+filenameValue);  //获取到要下载文件在web项目中的绝对路径
            /**4. 获取到文件MimeType 
             * 通过获取到的ServletContext域对象的getMimeType()方法,获取到文件MimeType
             * MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。
             * MIME 协议指示 MIME 用户代理如何显示附加的文件。
             * MIME 参考手册:http://www.w3school.com.cn/media/media_mimeref.asp
             * */
            String mimeType = servletContext.getMimeType(filenameValue);  //获取到要下载文件的mimeType类型
            /**5. 设置文件的输出类型
             * Response域对象的setContentType()方法,设置文件的输出类型
             * */
            resp.setContentType(mimeType);  //设置文件的输出类型
            /**6. 设置响应头,确定文件是内嵌或弹出下载框
             * 通过 Response 域对象的 setHeader("Content-Disposition","attachment;filename="+filename) 方法设置响应头,
             * Content-Disposition(内容处置/处理) : 
             *      是 MIME 协议的扩展,Content-Disposition 可以控制用户请求所得的内容存为一个文件的时候提供一个默认的文件名,
             * inline 和 attachment :
             *      文件直接在浏览器上显示或者在访问时弹出文件下载对话框。  
             *      inline 表示:内嵌显示,文本和图片都可以解析,但对于文件或者视频会自动去调用成attachment,因此可以直接使用inline
             *      attachment:弹出下载框
             * URLEncoder 对象,将在响应回去的头,里面所代码filename的编码格式,转换为与客户端的一致的编码格式
             *      URLEncoder.encode(filenameValue,"utf-8"); 将Response响应到浏览器客户端为filenameValue的文件名,转变为utf-8的编码格式
             */
            resp.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(filenameValue,"utf-8"));  //设置输出(下载)的文件的默认文件名为filenameValue的值,inline表示内嵌文本和图片
            /**7. 输出文件(下载文件)
             * 7.1 通过 new,创建字节输入流 FileInputStream,读取文件
             * 7.2 通过Response域,创建Servlet的输出流,输出文件
             * */
            FileInputStream fileInputStream = new FileInputStream(realPath);
            ServletOutputStream  outputStream = resp.getOutputStream();
            int b=0;
            byte[] by = new byte[1024*8];
            while ((b=fileInputStream.read(by))!=-1) {
                outputStream.write(by, 0, b);
            }
            outputStream.flush();
            fileInputStream.close();
            outputStream.close();  //关流,response获得流会自动关闭,因此也可以不用手动关
            
        }
    }
    

    前端页面 jsp 代码 - /demo/WebContent/download.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    String path=request.getContextPath();
    String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <!DOCTYPE html>
    <html>
        <head>
            <!-- <base> 标签为页面上的所有链接规定默认地址或默认目标。 -->
            <base href="<%=basePath%>">
            <meta charset="UTF-8">
            <title>文件下载</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        </head>
        <body>
            <a href="download?filename=JDBC连接主流数据库.txt">点击下载 文件</a> <br/>
            <a href="download?filename=0413102708.avi">点击下载 视频</a>
        </body>
    </html>
    

    web.xml - /demo/WebContent/WEB-INF/web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
      <display-name>demo</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
      <context-param>
        <param-name>ServletContextName</param-name>
        <param-value>ServletContextValue</param-value>
      </context-param>
    
      <servlet>
        <servlet-name>Download</servlet-name>
        <servlet-class>com.Download</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>Download</servlet-name>
        <url-pattern>/download</url-pattern>
      </servlet-mapping>
    
    </web-app>
    

    下载文件出现中文乱码和不显示文件名的情况

    在有些情况下,如果下载中文文件,页面在下载时会出现中文乱码或不能显示文件名的情况,原因是不同的浏览器默认对下载文件的编码方式不同,比如ie是UTF-8编码方式,而火狐浏览器是Base64编码方式。

    /**URLEncoder 对象,将在响应回去的头,里面所代码filename的编码格式,转换为与客户端的一致的编码格式
     *  URLEncoder.encode(filenameValue,"utf-8"); 
     *      将Response响应到浏览器客户端为filenameValue的文件名,转变为utf-8的编码格式
     * */
    resp.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(filenameValue,"utf-8"));
    

    详细配置信息可以参考这篇文章:http://blog.ncmem.com/wordpress/2019/08/28/java%e6%89%b9%e9%87%8f%e4%b8%8b%e8%bd%bd/

     

    展开全文
  • java批量删除

    2016-03-22 11:17:04
    界面批量删除
  • java批量插入(转载)

    千次阅读 2005-02-26 14:08:00
    于 2004-09-22 17:46 , sorry for netscape users:-)" src="file:///E:/helpDoc/java/java批量插入.files/icon_copy.gif" align=absMiddle border=0> 一、Hibernate是
    于 2004-09-22 17:46 
    user profile
    send a private message to user
    reply to post
    search all posts by
    select and copy to clipboard. 
    ie only, sorry for netscape users:-)
    add this post to my favorite list 
    
    一、Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码。从这个意义上来说,Hibernate和EB不是一个范畴的东西,也不存在非此即彼的关系。

    二、Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在兼容性问题。

    三、Hibernate不能用来直接和Entity Bean做对比,只有放在整个J2EE项目的框架中才能比较。并且即使是放在软件整体框架中来看,Hibernate也是做为JDBC的替代者出现的,而不是Entity Bean的替代者出现的,让我再列一次我已经列n次的框架结构:

    传统的架构:
    1) Session Bean <-> Entity Bean <-> DB
    为了解决性能障碍的替代架构:
    2) Session Bean <-> DAO <-> JDBC <-> DB
    使用Hibernate来提高上面架构的开发效率的架构:
    3) Session Bean <-> DAO <-> Hibernate <-> DB

    就上面3个架构来分析:
    1、内存消耗:采用JDBC的架构2无疑是最省内存的,Hibernate的架构3次之,EB的架构1最差。

    2、运行效率:如果JDBC的代码写的非常优化,那么JDBC架构运行效率最高,但是实际项目中,这一点几乎做不到,这需要程序员非常精通JDBC,运用Batch语句,调整PreapredStatement的Batch Size和Fetch Size等参数,以及在必要的情况下采用结果集cache等等。而一般情况下程序员是做不到这一点的。因此Hibernate架构表现出最快的运行效率。EB的架构效率会差的很远。

    3、开发效率:在有JBuilder的支持下以及简单的项目,EB架构开发效率最高,JDBC次之,Hibernate最差。但是在大的项目,特别是持久层关系映射很复杂的情况下,Hibernate效率高的惊人,JDBC次之,而EB架构很可能会失败。

    4、分布式,安全检查,集群,负载均衡的支持
    由于有SB做为Facade,3个架构没有区别。

    四、EB和Hibernate学习难度在哪里?

    EB的难度在哪里?不在复杂的XML配置文件上,而在于EB运用稍微不慎,就有严重的性能障碍。所以难在你需要学习很多EJB设计模式来避开性能问题,需要学习App Server和EB的配置来优化EB的运行效率。做EB的开发工作,程序员的大部分精力都被放到了EB的性能问题上了,反而没有更多的精力关注本身就主要投入精力去考虑的对象持久层的设计上来。

    Hibernate难在哪里?不在Hibernate本身的复杂,实际上Hibernate非常的简单,难在Hibernate太灵活了。

    当你用EB来实现持久层的时候,你会发现EB实在是太笨拙了,笨拙到你根本没有什么可以选择的余地,所以你根本就不用花费精力去设计方案,去平衡方案的好坏,去费脑筋考虑选择哪个方案,因为只有唯一的方案摆在你面前,你只能这么做,没得选择。

    Hibernate相反,它太灵活了,相同的问题,你至少可以设计出十几种方案来解决,所以特别的犯难,究竟用这个,还是用那个呢?这些方案之间到底有什么区别呢?他们的运行原理有什么不同?运行效率哪个比较好?光是主键生成,就有七八种方案供你选择,你为难不为难?集合属性可以用Set,可以用List,还可以用Bag,到底哪个效率高,你为难不为难?查询可以用iterator,可以用list,哪个好,有什么区别?你为难不为难?复合主键你可以直接在hbm里面配置,也可以自定义CustomerType,哪种比较好些?你为难不为难?对于一个表,你可以选择单一映射一个对象,也可以映射成父子对象,还可以映射成两个1:1的对象,在什么情况下用哪种方案比较好,你为难不为难?

    这个列表可以一直开列下去,直到你不想再看下去为止。当你面前摆着无数的眼花缭乱的方案的时候,你会觉得幸福呢?还是悲哀呢?如果你是一个负责的程序员,那么你一定会仔细研究每种方案的区别,每种方案的效率,每种方案的适用场合,你会觉得你已经陷入进去拔不出来了。如果是用EB,你第一秒种就已经做出了决定,根本没得选择,比如说集合属性,你只能用Collection,如果是Hibernate,你会在Bag,List和Set之间来回犹豫不决,甚至搞不清楚的话,程序都没有办法写。




    小菜虫wes109 , 请进.
    作者Re:Hibernate的优点 [Re:lummyliao]
    didongusa





    发贴: 61
    积分: 0
    于 2004-09-23 08:44 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    The EJB components are managed by EJB container, so who manage the Hibernate objects?

    In Framework 1, for BMP, the JDBC is wrapped by EJB container as DS, they are transparent to clients, now the Hibernate is going to replace JDBC, where I deploy them to?

    I do appreciate your help.
    Thanks.




    Google的[ 翻译此页 BETA ]!!!!!!!!!!!!!
    作者Re:Hibernate的优点 [Re:lummyliao]
    dengyin2000





    发贴: 18
    积分: 0
    于 2004-09-23 09:00 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    他并不需要容器manage

    象一般的容器就可以 tomcat

    你可以搞个简单的hibernate 例子 试试看




    eclipse folding plug-in
    作者Re:Hibernate的优点 [Re:lummyliao]
    didongusa





    发贴: 61
    积分: 0
    于 2004-09-23 09:39 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    If you need Tomcat, that means the Hibernate objects still need container.

    I confused the Tomcat was used for holding Servlets, I just guess they don't manage Hibernate objects.

    For example, I have a table called "Test" with one colume:

    "col1" datatype is "varchar2(100)".

    The database is in a remote node.

    Currently I have a node, this is my EJB container, I have a stateless session bean with remote "Hello", and the bean class is "HelloBean". I need to implement a business method named: "public void hello (String s)" inside "HelloBean" and exposed to "Hello", when client invoke 'hello("Hello World.");', I want to insert one row of data "Hello World." into the table "Test".

    My first question is: The Hibernate has hundreds classes, where I put those library classes? If the EJB container have to know all the classes.

    My second question is: If I need JDBC connection from

    public void hello(String s) {

    // JDBC needed here to insert.

    }

    How I get the "Connection" object?

    Thanks.
    I just interested to know how the links are implemented:
    3) Session Bean <-> DAO <-> Hibernate <-> DB




    eclipse folding plug-in
    作者Re:Hibernate的优点 [Re:lummyliao]
    didongusa





    发贴: 61
    积分: 0
    于 2004-09-24 05:44 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    I only need the idea where to find the Hibernate objects from the bean.

    Thanks.




    美军士兵手册(有何感想?)
    作者Re:Hibernate的优点 [Re:didongusa]
    nothing

    我等待..

    CJSDN高级会员


    发贴: 1572
    积分: 13
    于 2004-09-24 06:53 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    灵活的东西,不适合于工业生产.


    Best Regards,
    "But he has NOTHING on........."

    张孝祥java8碟 好东西啊
    作者Re:Hibernate的优点 [Re:lummyliao]
    sankxuan





    发贴: 36
    积分: 0
    于 2004-09-24 09:33 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    楼主转载请说明,hibernate的优势是显而易见的,如果有任何问题,
    请参看hibernate的文档,ejb3.0的也是吸取了hibernate的很多的东
    西




    请问哪儿有JAVA ——API 下载?
    作者Re:Hibernate的优点 [Re:lummyliao]
    didongusa





    发贴: 61
    积分: 0
    于 2004-09-26 03:23 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    In the
    3) Session Bean <-> DAO <-> Hibernate <-> DB

    Who is going to implement the DAO?

    Really need someone's help?




    Google的[ 翻译此页 BETA ]!!!!!!!!!!!!!
    作者Re:Hibernate的优点 [Re:didongusa]
    gispda





    发贴: 22
    积分: 1
    于 2004-09-26 10:55 user profilesend a private message to usersend email to gispdareply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    didongusa wrote:
    In the
    3) Session Bean <-> DAO <-> Hibernate <-> DB

    Who is going to implement the DAO?

    Really need someone's help?


    Firstly,You'd better to bind a sessionfactory to your app server,then in your session Bean can get the sessionfactory ,then you can put it in your dao.

    You dao can do all the CRUD operation.
    Session Bean's bussness method is your Dao's caller.




    IBM还真是牛啊
    作者Re:Hibernate的优点 [Re:lummyliao]
    didongusa





    发贴: 61
    积分: 0
    于 2004-09-26 12:31 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    Looks like you have to write some startup files to create the sessionfactory objects and bind them at the server startup.

    If shutdown and restart the server is impossible, how can you create and bind the object?

    Thanks.




    一个孩子纯洁的心——一个令医生目瞪口呆的孩子[zt]
    作者Re:Hibernate的优点 [Re:lummyliao]
    didongusa





    发贴: 61
    积分: 0
    于 2004-09-26 12:54 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    Using the "T3StartupDef" to trigger the binding at startup could hurt the portability, I think this is no no. Another way?

    Thanks.




    一个孩子纯洁的心——一个令医生目瞪口呆的孩子[zt]
    作者Re:Hibernate的优点 [Re:lummyliao]
    gispda





    发贴: 22
    积分: 1
    于 2004-09-27 10:18 user profilesend a private message to usersend email to gispdareply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    okay.then you can use spring with hibernate.



    别以为装机容易!
    作者Re:Hibernate的优点 [Re:lummyliao]
    极品飞车





    发贴: 134
    积分: 3
    于 2004-09-27 14:06 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    咋都说英文了?用spring+hibernate 吧.



    请问哪儿有JAVA ——API 下载?
    作者Re:Hibernate的优点 [Re:lummyliao]
    didongusa





    发贴: 61
    积分: 0
    于 2004-09-27 14:16 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    This container is too cold, you need a warmer one?

    Hibernate means "sleep inside the ejb container"?




    只有2%的人回答得了这道题
    作者Re:Hibernate的优点 [Re:lummyliao]
    huzhigang





    发贴: 4
    积分: 0
    于 2004-09-28 08:52 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    hibernate会困难到让你这么难选择?我表示惊讶。
    实际上是实体bean让我们很难选择的。

    这个列表可以一直开列下去,直到你不想再看下去为止。当你面前摆着无数的眼花缭乱的方案的时候,你会觉得幸福呢?还是悲哀呢?如果你是一个负责的程序员,那么你一定会仔细研究每种方案的区别,每种方案的效率,每种方案的适用场合,你会觉得你已经陷入进去拔不出来了。如果是用EB,你第一秒种就已经做出了决定,根本没得选择,比如说集合属性,你只能用Collection,如果是Hibernate,你会在Bag,List和Set之间来回犹豫不决,甚至搞不清楚的话,程序都没有办法写。

    Bag,List,Set的选择很容易,甚至不需要用一分钟。在不同的场合需要不同的解决问题的方式,这不好嘛?
    相反,EJB面对所有问题的all-in-one方式似乎是让你不用选择,但也让你无法选择合适的解决方案。
    如果楼主愿意浪费你三天的宝贵时间看完hibernate到底是什么?我相信你会喜欢它而不是ejb。




    IBM还真是牛啊
    作者Re:Hibernate的优点 [Re:lummyliao]
    holylz2004





    发贴: 3
    积分: 0
    于 2004-09-30 17:19 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    DAO是什么啊,



    myeclipse 3.82 的中文问题
    作者Re:Hibernate的优点 [Re:lummyliao]
    dlint





    发贴: 10
    积分: 0
    于 2004-10-17 20:42 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    The book "expert one-one-one J2EE Development without EJB" by Rod Johnson covers all the topics above.

    David Lin
    J2EE Consultant Melbourne




    服务器软件升级,激活JNI功能
    作者Re:Hibernate的优点 [Re:lummyliao]
    jbwang





    发贴: 201
    积分: 4
    于 2004-10-18 22:58 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    有的事情不能说的那么绝对!

    多方面看问题。



    MyJ2EE.grow();
    System.exit(0);

    只有2%的人回答得了这道题
    作者Re:Hibernate的优点 [Re:lummyliao]
    yclc





    发贴: 22
    积分: 0
    于 2004-10-20 11:55 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    其实类似的争论在很多方面出现了,你们彼此间的争论和讨论JAVA和C++孰优孰劣有什么区别呢?一种设计模式存在必然有他的存在理由,争个半天还不于自己去体验下~~



    服务器软件升级,激活JNI功能
    作者Re:Hibernate的优点 [Re:lummyliao]
    findjob





    发贴: 19
    积分: 0
    于 2004-10-21 20:24 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    >>2、运行效率:如果JDBC的代码写的非常优化,那么JDBC架构运行效率最高但
    >>是实际项目中,这一点几乎做不到,这需要程序员非常精通JDBC,运用Batc语
    >>句,调整PreapredStatement的 Batch Size和Fetch Size等参数,以及在必的
    >>情况下采用结果集cache等等。而一般情况下程序员是做不到这一点的。因此
    >>Hibernate架构表现出最快的运行效率。 EB的架构效率会差的很远。
    不明白为什么preparedStatement的效率会高?
    PreparedStatement pstmt = conn.preparedStatement(......);
    for (int i=0;i<size;i++) {
    pstmt.setString(1,...);
    pstmt.addBatch();
    }
    pstmt.executeBatch();
    用PreparedStatement.addBatch()有什么用?在mysql的驱动中只是把循环放在了
    pstmt.executeBatch()而已,原来要往数据庫端发送多少次封包,用了Batch还是要多少次,性能一点改变也没有。我还不如果动态生成语句,然后向数据庫端发送一次封包。




    急聘WEB报表开发人员(北京兼职),懂IReport报表工具
    作者Re:Hibernate的优点 [Re:lummyliao]
    robbin





    发贴: 3
    积分: 0
    于 2004-10-22 17:14 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    大言不惭!你自己写个简单的例子测试一下两种方式的插入1000条数据的效率就会明白你现在说的这些话多么可笑了。



    小菜虫wes109 , 请进.
    作者Re:Hibernate的优点 [Re:lummyliao]
    findjob





    发贴: 19
    积分: 0
    于 2004-10-22 17:51 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    没试过我不会乱说,我插入10万条,两者差距只有3秒。
    你有试过吗?没有吧。
    你有看过mysql jdbc的驱动吗,看过再说。




    只有2%的人回答得了这道题
    作者Re:Hibernate的优点 [Re:lummyliao]
    findjob





    发贴: 19
    积分: 0
    于 2004-10-22 19:19 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    这是我的测试
    mysql4.0.18nt
    mysql-connector-java-3.1.4-beta-bin.jar
    window server 2003
    代码:

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.Statement;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.Properties;
    import com.mysql.jdbc.Driver;

    public class BatchUpdateTest {

    private final static String CLEAR_DB =
    "truncate sales_rep";
    private final static String INSERT_INTO_DB =
    "insert into sales_rep values(?,?,?)";

    public final static void main(String[] args) {
    if (args.length != 2) {
    System.out.println("usage:please enter two args");
    return;
    }
    String type = args[0];
    int num = 0;
    try {
    num = Integer.parseInt(args[1], 10);
    } catch (NumberFormatException nume) {
    throw new IllegalArgumentException("the second arg must be a number");
    }
    if (!("update".equals(args[0]) || "updateBatch".equals(args[0]) || "updateStmt".equals(args[0]))) {
    throw new IllegalArgumentException("the first arg must be 'update' or 'updateBatch' or 'updateStmt'");
    }
    //DriverManager.setLogStream(System.out);
    Connection conn = null;
    try {
    new Driver();
    Properties prop = new Properties();
    prop.setProperty("user", "root");
    prop.setProperty("useUnicode", "true");
    prop.setProperty("characterEncoding", "GB2312");
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", prop);
    if (args[0].equals("update"))
    update(conn, num);
    else if (args[0].equals("updateBatch")) {
    updateBatch(conn, num);
    } else {
    updateStmt(conn, num);
    }

    } catch(SQLException sqle) {
    sqle.printStackTrace();
    } finally {
    try {
    if (conn != null) conn.close();
    } catch (SQLException sqle) {
    System.err.println(sqle.toString());
    }
    }
    }

    private static void update(Connection conn, int num) throws SQLException {
    PreparedStatement pstmt = conn.prepareStatement(CLEAR_DB);
    pstmt.executeUpdate();
    pstmt.close();
    pstmt = conn.prepareStatement(INSERT_INTO_DB);
    long startTime = System.currentTimeMillis();
    for (int i = 0;i<num;i++) {
    pstmt.setInt(1, i);
    pstmt.setString(2, "test");
    pstmt.setString(3, "testData");
    pstmt.executeUpdate();
    }
    pstmt.close();
    System.out.println(System.currentTimeMillis() - startTime);
    }

    private static void updateBatch(Connection conn, int num) throws SQLException {
    PreparedStatement pstmt = conn.prepareStatement(CLEAR_DB);
    pstmt.executeUpdate();
    pstmt.close();
    pstmt = conn.prepareStatement(INSERT_INTO_DB);
    long startTime = System.currentTimeMillis();
    for (int i = 0;i<num;i++) {
    pstmt.setInt(1, i);
    pstmt.setString(2, "test");
    pstmt.setString(3, "testData");
    pstmt.addBatch();
    }
    pstmt.executeBatch();
    pstmt.close();
    System.out.println(System.currentTimeMillis() - startTime);
    }

    private static void updateStmt(Connection conn, int num) throws SQLException {
    PreparedStatement pstmt = conn.prepareStatement(CLEAR_DB);
    pstmt.executeUpdate();
    pstmt.close();
    Statement stmt = conn.createStatement();
    long startTime = System.currentTimeMillis();
    StringBuffer buffer = new StringBuffer(num * 20);
    buffer.append("insert into sales_rep values");
    for (int i=0;i<num;i++) {
    buffer.append('(');
    buffer.append(i).append(',');
    buffer.append("'test','testData'),");
    }
    buffer.deleteCharAt(buffer.length() - 1);
    stmt.executeUpdate(buffer.toString());
    stmt.close();
    System.out.println(System.currentTimeMillis() - startTime);
    }
    }



    findjob edited on 2004-10-22 19:37


    IDEA 4.5.3已经发布了。
    作者Re:Hibernate的优点 [Re:lummyliao]
    findjob





    发贴: 19
    积分: 0
    于 2004-10-22 19:31 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    10000条




    “FlashPaper”把Word文件转换成Flash
    作者Re:Hibernate的优点 [Re:lummyliao]
    findjob





    发贴: 19
    积分: 0
    于 2004-10-22 19:46 user profilesend a private message to userreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
    robbin是吗,是不是Hibernate.org.cn上的robbin,我知道你很精通Hibernate,你是牛人。但这次你绝对错了。如果用的是mysql.
    展开全文
  • 有时候服务运行的日志文件,需要...这个是以服务器的访问日志作为示例,一个日志文件中一行的数据格式如下(文件夹中有多个日志文件): [10/Aug/2018:00:47:39 +0800] ******* - 356 "-" "GET https://****/***...

    有时候服务运行的日志文件,需要统计分析,但数据量很大,并且直接在文件中看很不直观,这时可以将文件中的内容导入到数据库,入库后的数据就可以按照需求进行统计分析了。

    这个是以服务器的访问日志作为示例,一个日志文件中一行的数据格式如下(文件夹中有多个日志文件):

    [10/Aug/2018:00:47:39 +0800] ******* - 356 "-" "GET https://****/****/image57.png" 200 0 5510 HIT "******" "image/png"

    下面就是具体的读取文件,然后插入到数据库的过程,代码如图:

    package com.mobile.web.api;
    
    import com.mobile.commons.JsonResp;
    import com.mobile.model.LogInfo;
    import com.mobile.service.LogInfoService;
    import org.apache.commons.lang3.StringUtils;
    import org.apache.log4j.Logger;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.transaction.annotation.Transactional;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.io.*;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import java.util.Locale;
    
    
    @RestController
    @RequestMapping(value = "/test")
    @Transactional
    public class ImportController {
        Logger log = Logger.getLogger(this.getClass());
    
        @Autowired
        private LogInfoService logInfoService;
    
        @RequestMapping(value = "/importTxt", method = RequestMethod.GET)
        public JsonResp importTxt() throws IOException, ParseException {
            log.debug("开始导入数据");
    
            String encoding = "GBK";
            List logInfoList = new ArrayList();
            String dir = "E:\\test\\log";
            File[] files = new File(dir).listFiles();
            for (File file : files){           //循环文件夹中的文件
                if (file.isFile() && file.exists()) { //判断文件是否存在
                    importFile(file, encoding, logInfoList);  //将文件中的数据读取出来,并存放进集合中
                } else {
                    return JsonResp.toFail("文件不存在,请检查文件位置!");
                }
            }
    
            Boolean insertFlag = logInfoService.insertBatch(logInfoList);   //将集合中的数据批量入库
            if (!insertFlag) {
                return JsonResp.toFail("保存失败");
            }
            return JsonResp.ok();
        }
    
    
      /** 读取数据,存入集合中 */
        public static void importFile(File file, String encoding, List logInfoList) throws IOException, ParseException {
            InputStreamReader read = null;//考虑到编码格式
            try {
                read = new InputStreamReader(
                        new FileInputStream(file), encoding);  //输入流
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            BufferedReader bufferedReader = new BufferedReader(read);
            String lineTxt = null;
            SimpleDateFormat sdf = new SimpleDateFormat("[dd/MMM/yyyy:HH:mm:ss Z]", Locale.US); //时间格式化,此处有坑,下边会说到
            while ((lineTxt = bufferedReader.readLine()) != null) {  //读取文件内容
                String[] lineArr = lineTxt.split(" ");
                int len = lineArr.length;
                LogInfo logInfo = new LogInfo();     //封装实体对象做入库准备
                String logDate = lineArr[0] + " " + lineArr[1];
                System.out.println(sdf.parse(logDate));     //.............时间转换问题
                logInfo.setLog1(sdf.parse(logDate));
                logInfo.setLog2(lineArr[2]);
                logInfo.setLog3(lineArr[3]);
                logInfo.setLog4(lineArr[4]);
                logInfo.setLog5(lineArr[5].substring(1, lineArr[5].length() - 1));
                logInfo.setLog6(lineArr[6].substring(1));
                logInfo.setLog8(lineArr[7].substring(0, lineArr[7].length() - 1));
                String accessUrl = lineArr[7];
                String[] accessUrlArr = accessUrl.split("/");
                logInfo.setItemName(accessUrlArr[3]);
                logInfo.setLog9(lineArr[8]);
                logInfo.setLog10(lineArr[9]);
                logInfo.setLog11(lineArr[10]);
                logInfo.setLog12(lineArr[11]);
                String[] uaHead = new String[len - 13];
                System.arraycopy(lineArr, 12, uaHead, 0, len - 13);//数组拷贝,a表示源数组,b表示源数组要复制的起始位置,c表示目标数组,d表示目标数组起始位置,e表示要复制的长度。
                logInfo.setLog13(StringUtils.join(uaHead));
                logInfo.setFileType(lineArr[len - 1]);
    
                logInfoList.add(logInfo);
            }
            read.close();  //输入流关闭
    
        }
    
    
    }

    文件导入,成功;

    时间转换时的坑

      SimpleDateFormat sdf = new SimpleDateFormat("[dd/MMM/yyyy:HH:mm:ss Z]", Locale.US);

      字符串转时间时:英文简写为英文格式,而转换时JRE会按照当前地区的语言格式,所以转换失败

      解决方法:带上Locale.US参数

      详细解决可参考:https://www.cnblogs.com/mufengforward/p/9480102.html

     

    此时,如果数据量特别大时,会出现入库慢的情况,有另一种方法是:读取文件后,将数据按照想要的格式存如新文件中,然后用sql语句(或navicat客户端)导入文件;

       

    www.mufengforward.com/

    展开全文
  • java web使用数据池访问数据库的经典案列,可以实现数据库的批量存储和删除,显示数据库的所有信息,登陆数据库,注册用户,修改和添加。工厂模式等等设计思路
  • java实现的web网络书店

    千次阅读 2018-05-07 20:45:06
    本文demo教学视频下载地址:http://www.wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=1088实例介绍了Java实现的Web网络书店, 含有项目源码, 论文, 代码讲解和数据库脚本, 网络书店分为多个栏目, 每个...

    本文demo教学视频下载地址:http://www.wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=1088

    实例介绍了Java实现的Web网络书店, 含有项目源码, 论文, 代码讲解和数据库脚本, 网络书店分为多个栏目, 每个栏目有相应的书籍列表,点击后可查看书籍详情,然后可以购买并通过工商银行进行付款

    如遇视频不清晰,请最大化观看演示

    java实现的web网络书店

    项目对应的实例代码可以通过右侧【下载实例】按钮获取

    开发工具: MyEclipse10, JDK1.7, Tomcat7, MySql5.5.60

    【项目包含内容】(见下图):

    【论文】 论文文章

    【数据库设计】 数据库脚本

    【文档】 代码详情讲解

    【项目源代码】 Web项目源代码

    java实现的web网络书店

    【实例功能】

    前台:

    1). 用户模块功能有:

    * 用户注册:

    > 表单页面是jQuery做校验(包含了ajax异步请求)

    # 在输入框失去焦点时进行校验;

    # 在提交时对所有输入框进行校验;

    # 在输入框得到焦点时,隐藏错误信息。

    > 表单页面使用一次性图形验证码;

    > 在servlet中再次做了表单校验。

    > 注册成功时,使用javaMail给注册用户发送激活邮件,邮件中包含用于激活的链接,链接包含激活码参数;

    * 用户激活:通过激活码查询用户,如果查询不到用户,那么无效激活码!激活码使用uuid生成!

    * 用户登录:

    > 表单校验与注册功能相同;

    > 登录成功时会把当前用户名保存到cookie中,为了在登录页面的输入框中显示!

    * 用户退出:销毁session

    2). 分类模块

    * 查询所有分类:

    > 有1级和2级分类

    > 在页面中使用手风琴式菜单(Javascript组件)显示分类。

    3). 图书模块:

    * 按分类查询

    * 按作者查询

    * 按出版社查询

    * 按书名模糊查询

    * 多条件组合查询

    * 按id查询

    除按id查询外,其他都是分页查询。

    技术难点:

    > 组合查询:根据多个条件拼凑sql语句。

    > 带条件分页查询:条件可能会丢失。使用自定义的PageBean来传递分页数据!

    > 页面上的分页导航:页码列表的显示不好计算!

    4). 购物车模块:

    * 添加条目

    * 修改条目数量

    * 删除条目

    * 批量删除条目

    * 我的购物车

    * 查询被勾选条目

    购物车没有使用sesson或cookie,而是存储到数据库中。

    技术难点:

    > 添加条目时,如果两次添加针对同一本书的条目,不是添加,而是合并;

    > 修改数量时使用ajax时请求服务器端,服务器端返回json。

    > 大量js代码

    5). 订单模块:

    * 生成订单

    * 我的订单

    * 查看订单详细

    * 订单支付

    * 订单确认收货

    * 取消订单

    技术难点:

    > 使用易宝在线支付平台:

    # 按照易宝支付范围与易宝支付网关对接。

    # 接收易宝的两种应答机制,针对点对点应答给予回复。

    # 处理多次应答照成的数据库重复确认。

    后台

    1). 管理员

    * 管理员登录

    2). 分类管理

    * 添加1级分类

    * 添加2级分类: 需要为2级分类指定所属1级分类

    * 编辑1级分类

    * 编辑2级分类: 可以修改所属1级分类

    * 删除1级分类: 存在子分类时,不能删除

    * 删除2级分类: 当前2级分类下存在图书时不能删除

    * 查看所有分类

    3). 图书管理

    * 各种查询:与前台相同

    * 添加图书:

    > 上传图片

    > 页面中使用动态下拉列表显示2级分类,当指定1级分类后,2级分类下拉列表中动态显示该1级分类下所有2级分类名称

    * 修改图书: 与添加图书相似,也使用动态下拉列表

    * 删除图书: 需要删除图书对应图片,再删除图书

    4). 订单管理

    * 各种查询

    * 订单发货

    * 订单取消

    【项目配置】

    1.c3p0-config.xml中修改数据源配置信息

    <c3p0-config>
    <default-config>
    <property name="jdbcUrl">
    <![CDATA[
    jdbc:mysql://localhost:3306/goods?useUnicode=true&characterEncoding=UTF8&useServerPrepStmts=true&prepStmtCacheSqlLimit=256&cachePrepStmts=true&prepStmtCacheSize=256&rewriteBatchedStatements=true
    ]]>
    </property>
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="user">root</property>
    <property name="password">root</property>
    <property name="acquireIncrement">3</property>
    <property name="initialPoolSize">10</property>
    <property name="minPoolSize">2</property>
    <property name="maxPoolSize">10</property>
    </default-config>
    </c3p0-config>

    2. 将 goods.sql 导入到数据库中

    java实现的web网络书店

    【实例效果图】

    访问链接: http://localhost:8080/goods/ 登录信息: liSi/123

    java实现的web网络书店

    java实现的web网络书店

    java实现的web网络书店

    java实现的web网络书店

    java实现的web网络书店

    java实现的web网络书店

    java实现的web网络书店


    展开全文
  • Java Web程序设计教程

    热门讨论 2013-12-11 11:00:31
    <<Java Web程序设计教程.pdf>>人民邮电出版社的教程哦,所以,好书,你懂的!! 第1章web应用开发简介 1 1.1何为web应用 1 1.1.1web的概念及发展 1 1.1.2web应用程序 2 1.2使用java开发web应用 3 1.2.1面向对象...
  • Java Web安全之代码审计

    千次阅读 2019-02-13 09:14:00
    本文内容主要以Java Web安全-代码审计为中心展开。 一、JavaWeb 安全基础 1. 何为代码审计? 通俗的说Java代码审计就是通过审计Java代码来发现Java应用程序自身中存在的安全问题,由于Java本身是编译型语言,所以...
  • 10万+IT人都在关注的图片批量压缩上传方案(完整案例+代码) 背景需求:为了客户端访问图片资源时,加载图片更流畅,体验更好,通常不会直接用原图路径,需要根据不同的场景显示不同规格的缩略图,根据商品关键属性,...
  • Java Web 面试题

    千次阅读 2011-12-08 17:08:35
    答:forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。...
  • web层 @RequestMapping(&amp;amp;quot;downloadZipQr&amp;amp;quot;) public void downloadZipQr(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, @RequestParam(&...
  • CkEditor批量上传图片(java)

    千次阅读 2016-12-27 16:48:45
    最近,因后台编辑需要,原来的editor不能批量上传图片(拖拽)和上传视频,于是我花了大概一周时间研究了一下ckeditor,是现实图片拖拽上传(可多个)和视频上传(flv,mp4,mov等),开始是想将这两个功能点写在一起...
  • Java图片上传 + 批量

    千次阅读 2018-09-27 14:22:13
    //为保证服务器安全,上传文件应该放在外界无法直接访问的目录下,比如放于WEB-INF目录下。 String savePaht=url; File file=new File(savePaht); //判断上传的目录是否存在 if(!file.exists()){ //如果不存在则...
  • JAVA web中的一点东西

    千次阅读 2016-10-05 19:07:45
    Service方法会在服务器被访问时调用,Servlet对象的生命周期中service方法可能被多次调用,由于web-server启动后,服务器中公开的部分资源将处于网络中,当网络中的不同主机(客户端)并发访问服务器中的同一资源,...
  • Java MyBatis 删除 使用 foreach传递 List批量删除1. 相关数据表2. User.java3. UserMapper.xml4. DAO(Data Access Object)数据访问接口 UserDao.java和实现类 UserDaoImpl.java5. UserController.java(入口) 1. ...
  • Java Web Services面试问题集锦

    万次阅读 2014-07-01 13:49:34
    Java Web Services面试问题集锦  Q. 应用集成方式有哪些? A. 应用可以采用以下方式集成: 1. 共享数据库 2. 批量文件传输 3. 远程过程调用(RPC) 4. 通过消息中间件来交换异步...
  • MLDN 李兴华 Java Web 开发实战经典.pdf (高清版) 全书分为两部分,需 要全部下载下载一起解压,此部分为第二部分 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 ...
  • ##Java web 期末课程设计--名片管理系统 Jsp+Servlet+JavaBean+Jdbc+DAO+MySQL+Bootstrap+jQuey。 其中也有一些不是很好的操作,譬如页面嵌套了iframe,其实应有更好的解决方案。 其中也牵扯对于ajax、EL表达式、...
  • 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器...
  • 一个简单的java web 项目

    万次阅读 多人点赞 2014-04-17 20:39:45
    本文实现一个简单的 java web 项目:
  • MLDN 李兴华 Java Web 开发实战经典.pdf (高清版) 全书分为两部分,需 要全部下载下载一起解压,此部分为第一部分 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 ...
  • 微信公众号批量爬取——Java

    千次阅读 2017-12-05 10:49:30
    最近需要爬取微信公众号的文章信息...后来在知乎上看到了一位大牛用php写的微信公众号爬取程序,就直接按大佬的思路整了整搞成java的了。改造途中遇到蛮多细节问题,拿出来分享一下。 附上大牛文章链接:https://zhuanl
  • Java Web实践专题——信息显示

    千次阅读 2007-10-23 14:47:00
    经典的显示方法本章主要介绍如果控制页面的输出,如何控制查询结果的显示,不可否认的是Web应用的是很多功能都要显示数据。向用户输出的信息包括静态页面和动态页面:静态页面就是我们编写好的html文件,不包含任何...
  • Java Web程序设计笔记 • 【第6章 Servlet技术进阶】

    千次阅读 多人点赞 2021-03-06 17:18:38
    6.2.3 实践练习 6.3 MVC(一) 6.3.1 Model 1 架构模式简介 JSP 的 Model 1 和 Model 2 是 SUN 公司为了更好地指导 Web 开发人员进行 JavaWeb 开发提出的两种架构模式,本质区别在于处理批量请求的位置不同 Model1 ...
  • java-web系列(一)—搭建一个基于SSM框架的java-web项目 java-web系列(二)—以dockerfile的方式发布java-web项目 java-web系列(三)—(slf4j + logback)进行日志分层 java-web系列(四)—几种常见的加密...
  • http://blog.csdn.net/u012661010/article/details/76696309问:能不能简单描述一下你在java web开发中需要用到多线程编程的场景?对多线程有些了解,但是不太清楚具体的应用场景,能简单说一下你遇到的多线程编程的...
  • Java MyBatis 插入单个/ 使用 foreach传递 List插入多个, 批量插入1. 相关数据表2. User.java3. UserMapper.xml4. DAO(Data Access Object)数据访问接口 UserDao.java和实现类 UserDaoImpl.java5. UserController....
  • 三、Java web编程 ❤1、web编程基础 1、启动项目时如何实现不在链接里输入项目名就能启动? 2、1分钟之内只能处理1000个请求,你怎么实现,手撕代码? 3、什么时候用assert 4、JAVA应用服务器有那些? 5、JSP的内置...
  • Java Web整合开发王者归来(含源代码) 并且源代码比光碟中的新,光盘中的代码有部分不全,有两个项目没有,现已打上补丁。 PDF文件解压缩后324M,源代码压缩文件65.5M 下载地址:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,227
精华内容 15,290
关键字:

java批量访问web

java 订阅