为什么突然想要分析一下GET和POST方法的区别呢,是因为最近在写小组的图书管理系统。这个项目的第一版已经基本写完了,但是仍有一些小bug让我想不明白。比如其中的一个bug: 用户在图书详情页对该图书进行评价,评价成功之后刷新页面,将会在刷新的那一刻再次提交评论内容,刷新多次则会提交多次。 今天不经意间终于搞明白了这个bug,问题就出在这GET和POST上! bug复现 先来看一下评论部分的JSP页面代码: <div> <form action="/addComments.do?bookid=<%=bookid%>" method="post"> <div> <center> <textarea cols="50" rows="5" style="width:300px;" name="detail" placeholder="想说点什么?"></textarea> 继续阅读 >>


祝一迪 17/08/02 16:07:28
这几天开始和社会董还有小孟愿开始写小组的图书管理系统,将在此期间遇到的一些问题和学到的一些知识总结在博客里。 这篇博客要总结的就是在WEB项目中用到的很重要的一种数据库设计模式DAO。 DAO是什么 DAO是WEB项目里面的数据层,主要负责为其他各层(MVC(Model View Controller))提供数据。DAO层里封装了对数据库的各种操作的代码。 为什么要使用DAO 我们在写WEB项目时,经常会有这样的需求:需要从数据库拿到数据,然后再展示再前端页面上,这也就说明我们需要在JSP页面中使用JDBC连接数据库进行各种操作。且不说在JSP页面上操作数据库有多繁复,单是大段大段的JAVA代码就已经使得JSP页面变得很复杂了。JSP页面应该专注于数据的展示结果,而非数据的取得过程。所以我们使用DAO设计模式,提供一组通用的数据库操作方法,简化代码,增强程序的可移植性。 DAO层的组成 DAO层主要由五个部分组成:DBUtil(数据库连接类),VO(valueObject值对象),IDAO(DAO接口),DAOImpl(DAO实现类) 继续阅读 >>


祝一迪 17/07/25 15:44:03
什么是标准标签? 标准标签有什么作用? 简明扼要的来说, 标准标签就是一些以”jsp:”作为前置的标签, 主要作用是为了减少JSP中的Java代码. 1. <jsp:include> <jsp:forward>标签 <jsp:include> 在前面曾经提到过include指示元素, 可以在JSP转译的时候将其他的JSP页面包括合并进来一起转译, 但是这样include进来的JSP页面是静态的, 我们无法给包括进来的JSP页面传递参数或对它进行动态调整, 只是将多个JSP页面合并成一个JSP页面再进行转译, 结果也只会生成一个Servlet. 但是使用标准标签<jsp:include>可以在运行时动态地将其他的JSP页面包括进来, 并传递参数等. 被包含的JSP页面也会自己独立生成一个Servlet类. <jsp:include>在使用过程中实质上发生了什么呢? 前面在Servlet里面提到过请求的包含(include())与转发(forward()), 其实, 在JSP转 继续阅读 >>


祝一迪 17/06/20 11:11:22
前面总结完了Servlet相关的基础知识, 现在来学习总结一下JSP. 1. JSP简介 JSP全称Java Server Pages, 是一种动态网页开发技术. JSP与Servlet是一体两面的, 因为JSP网页最终会被容器转译为Servlet源代码, 然后自动编译为.class文件, 再载入.class文件, 最后生成Servlet对象. 下面我们以一个Hello World的例子, 来分析以下JSP和Servlet的关系, 以及JSP的生命周期. 例: 用JSP输出Hello Word, 并分析转译的Servlet代码. JSP代码如下: <html> <head> <title>Hello JSP</title> </head> <boay> <h1>Hello World!</h1> </body> </html> 这就是最简单地JSP的一 继续阅读 >>


祝一迪 17/06/12 22:55:19
过滤器是什么? 抽象点来说, 就是介于Servlet之间的独立的元件, 可以随时加入到应用程序之中, 也可以随时移除. 具体点来说, 比如针对某些特定的页面, 只有特定的用户才能浏览, 这个时候我们就希望能把所有登录的用户进行过滤, 只给一些用户访问的权限, 这就可以在Servlet之前实现一个用户验证的过滤器. 过滤器通常搭配封装器来使用. 关于封装器可分为请求封装器和响应封装器, 具体概念及用法将在下面介绍. 1. 实现与设置过滤器 在Servlet中要实现过滤器, 必须要实现Filter接口, 并使用@WebFilter标注或在web.xml中定义过滤器, 让容器知道应该加载哪些过滤器类. Filter接口有三个需要实现的方法:init(), doFilter(), destroy(), Filter接口的代码如下: public interface Filter{ public void init(FilterConfig filterConfig) throws ServletException; //Filt 继续阅读 >>


祝一迪 17/06/07 21:29:11
今天康康问了我一个问题, 问我在Java中有没有像C里面stdio.h, C++里面iostream这样的标准类库, 当然是有的, Java里面的标准类都被封装在一个个包里面, 今天就来简要概括一下Java里面常用的包. 问: Java里面有没有不用improt导入就能使用的包? 还真有一个包, 不用导入就能使用里面的类和方法. 比如在main()函数里面只写一句System.out.println(“hello world!”);就不用导入任何包吧, System类就属于这个java.lang包. 那么这个包还有哪些东西呢? 那就从java.lang包开始了解吧! java.lang包 java.lang是唯一一个不需要自己手动improt导入的包, 它由JVM默认寻找并导入. java.lang提供利用 Java 编程语言进行程序设计的基础类。最重要的类是 Object(它是类层次结构的根)和 Class(它的实例表示正在运行的应用程序中的类). java.lang是Java里面最常用的包, 它主要包含以下内容. 1. 基本数据类型的 继续阅读 >>


祝一迪 17/06/06 20:52:20
Web容器管理Servlet/JSP相关的对象生命周期, 若对HttpSession对象/ServletContext对象在生成, 销毁或相关属性设置(或改变)发生的时机感兴趣, 则可以实现对应的监听器(Listener). 1. ServletContext事件 监听器 与ServletContext事件相关的监听器有: 生命周期监听器: ServletContextListener 属性改变监听器: ServletContextAttributeListener (1) ServletContextListener 1> ServletContextListener概述: ServletContexListener接口是继承于EventListener接口, 主要用于知道Web应用程序何时已经初始化或即将结束销毁. 其中实现了contextInitialized()方法和contextDestroyed()方法, 分别在应用程序初始化后或即将结束前调用这两个方法.ServletContextListener接口的实现代 继续阅读 >>


祝一迪 17/06/03 15:16:59
今天上课学到了C++的浅层拷贝与深层拷贝, 于是在这里将C++和Java关于浅层拷贝与深层拷贝做一个对比. 一.C++的浅层拷贝与深层拷贝 先来了解一下C++中的复制构造函数: //假设有这样一个TEST类: class TEST { private: int *num; public: TEST(int n) { num = new int; *num = n; } void change(int anothernum) { *num = anothernum; } void print() { cout << *num << endl; } }; 在上述TEST类中并没有显式定义TEST类的复制构造函数, 那么其默认的复制构造函数应为: TES 继续阅读 >>


祝一迪 17/05/24 23:07:26
一.关于Servlet的一些基本概念 -每个Servlet都必须由Web容器读取Servlet设置信息(标注或web.xml),初始化等,才能成为一个真正的Servlet. 1.ServletConfig:每个Servlet设置的代表对象.对于每个Servlet的设置信息,Web容器都会为其生成一个ServletConfig作为代表对象. 2.ServletContext:代表整个Web应用程序的对象. (1)Servlet接口上定义的与生命周期及请求服务相关的三个方法 1>init():对Servlet的一些初始化工作; 2>service():调用Servlet实例的service()方法进行服务; 3>destory():对Servlet的一些善后工作. (2)Servlet的生命周期 1>Web容器启动后,读入Servlet设置信息,产生一个ServletConfig对象,并作为参数传入init(); 2>初始化完成后,请求来临,产生HttpRequest对象和HttpResponse对象,并传入ser 继续阅读 >>


祝一迪 17/05/24 17:29:40
今天遇到一个问题,需要输入命令行参数,然后就发现不知道IDEA应该在哪里输入命令行参数. 方法一: 在上方工具栏点击Run选项,然后会出来一个小框,点击Edit选项,在Program arguments栏输入你要输入的命令行参数,点击Run就可以啦! 方法二: 快捷键实现以上操作: ALT + SHIFT + F10,右,Edit,回车键,Tab键,输入命​​令行参数,回车。 作者:dela_ 发表于2017/5/23 21:54:05 原文链接 阅读:2 评论:0 查看评论 继续阅读 >>


祝一迪 17/05/23 21:54:05