`

精简版BBS学习札记(二)

阅读更多
1、JSP文件放置的位置可以与HTML文件放置的位置一样,但是JSP文件一定不能放在WEB-INF或者META-INF文件下

2、WEB-INF文件中只能放三种文件
   1)、class文件
   2)、lib文件
   3)、web.xml

3、在JSP文件通过URL传参数时,一定要注意参数前后的空格问题!,一般情况下是不能有空格的!
   1)、如果是post的传递呢?
       解决:请你把接收过来的参数打印出来(打印在后台)
   2)、如果怀疑传过来的参数(如id)带空格(这样让人感到很不爽!)!
       解决:在打印参数的前后加一些字符即可!

4、在提交表单时,用自身提交(即自己提交给自己),而且同时这个JSP文件也有一个外链接,如何区别是外链接?还是自身提交呢?
   用隐含域
   如:这是一个Post.jsp文件!下面两段代码是在同一个JSP文件中!
  
       //这是在HTML区域	
      <form action="Post.jsp" method="post">
         <input type="hidden" name="action" value="post"> //隐含域
                 ....
      </form>
   

    可以在JSP区域中写如:
String action = request.getParameter("action") ;
//if(action !=null && action.equals("post")) {
if("action".equals(action)) {
...
}
 


还有一个外链接是:
//这个外链接是在ShowArticleTree.jsp文件中
<a href="Post.jsp">发表新帖</a>

如果是外链接是不是执行if里的语句(因为没有传递action),而在表单中提交时会执行的(因为传递action了!)

5、在发表新主题时,pid(pid为父id)肯定为0,那rootid(根id)呢?因为rootid是数据库自动递增的id,那如何将这个自动递增的id传给rootid呢?
   1)、这个新发表主题的id是当前最大的id,用SELECT语句找到这个最大的id,然后再更新一下,就可以了!,不过这时,插入新主题的SQL语句与找到最大id的SQL语句以及更新语句都必须同时放在一个事务中!
   2)、在java中API提供了一个方法可以帮我们拿到PrepareStatement对象自动生成的键(key),这即Statement.RETURN_GENERATED_KEYS
conn.setAutoCommit(false) ;
	
	
	String sql = "insert article values(null, 0, ?, ?, ?, now(), 0)" ;
	PreparedStatement pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS) ;  //Statement.RETURN_GENERATED_KEYS是拿到预编译语句中的自动生成的KEYS!这里的KEYS为什么是复数呢?因为这个方法会生成很多KEY,但是这里的KEY不是指问号!!!
	Statement stmt = conn.createStatement();

	pstmt.setInt(1, -1) ;
	pstmt.setString(2, title) ;
	pstmt.setString(3, cont) ;
	pstmt.executeUpdate() ;
	
	ResultSet rsKey = pstmt.getGeneratedKeys() ; //拿到自动生成的KEYS
	rsKey.next() ;
	int key = rsKey.getInt(1) ; //拿到第一个KEY,因为第一个KEY就是rootid!
	rsKey.close() ; //因为后面的语句不需要rsKey参与了,因此在这里就可以关闭了!
	stmt.executeUpdate("Update article set rootid =" + key + "where id=" + key) ;

	conn.commit() ;
	conn.setAutoCommit(true) ;

这样就可以更新rootid了!

6、将HTML文件改成JSP文件,首先引入JSP文件头部:
<%@ page contentType="text/html; charset=gbk" pageEncoding="gbk" %>


7、为什么在Login.jsp中,
  1)要用session.setsession.setAttribute("admin", "true");
     然后再重定向到主页面呢?
  2)而不用request.setAttribute("admin", "true") ;
     然后再转发到主页面呢?
是因为关于URL的改变吗?还是因为session和request的范围不同呢?

因为两者的使用范围不同
      比如用方法2)来登录,虽然登录上了,但是如果进行下一步操作(如:修改或者删除帖子等)后,刷新页面,则刷新后的页面,就退出了你以管理员身份登录后台的操作了!这是因为(也体现了)HTTP协议是不连续的(即无状态性的),如果以这样方式登录后台,操作一步,退出一步,然后再登录一步!那管理员是不是都疯了!    
     而用方法1)是在整个会话中都存在的,只要不关闭当前的浏览器窗口,你的身份就是管理员!

8、当用eclipse或者myeclipse看JSP文件时,同时这个文件含有大量的HTML语句,可以借助右边有一个Outline视图来看一个一个小标签(或者模块)!
分享到:
评论

相关推荐

    LabView学习札记

    PDF文件包含了学习札记的序言和五个章节,分别是“一(上)、一(下)、二、三(上)、三(下)”。这些章节可能涵盖了LabView的基础知识,如G语言基础、界面设计、数据处理、控制流与结构以及可能深入到的高级主题...

    labview 学习札记2

    本学习札记的第二卷,将深入介绍LabVIEW的基本概念和核心功能,旨在帮助初学者快速入门。以下是可能涵盖的知识点: 1. **G语言**:LabVIEW的核心编程语言称为G语言,通过拖拽和连接不同的函数框图来实现代码编写。G...

    labview学习札记

    LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一种图形化编程环境,主要用于开发虚拟...希望这个学习札记能帮助你在虚拟仪器的学习道路上找到方向,不断进步,最终在LabVIEW的世界里游刃有余。

    LabVIEW学习札记

    这个“LabVIEW学习札记”显然是一份关于掌握LabVIEW核心概念和技术的详细资料。下面我们将深入探讨LabVIEW的一些关键知识点。 1. **G语言**: LabVIEW的核心编程语言称为G,它是一种基于图形的编程语言。通过连接...

    Simulink代码生成学习札记[汇编].pdf

    Simulink代码生成学习札记[汇编].pdf

    虚拟仪器LabVIEW 教程PPT资料 学习札记 应用设计等学习资料.zip

    LabVIEW_学习札记_-_第二卷.pdf LabVIEW微波测试系统.pdf labview论坛-基于Labview的智能小车控制平台.doc 基于LabVIEW的多传感器信息采集平台.pdf 基于虚拟仪器的三段式距离保护研.doc 基于虚拟仪器的液位控制系统...

    labview论坛-LabVIEW 学习札记 - 第二卷

    "LabVIEW 学习札记 - 第二卷"是针对LabVIEW进阶学习的一份珍贵资料,包含了丰富的实践案例和深入的技术解析。 在这一卷中,你可能会学习到以下几个关键知识点: 1. **G语言与程序结构**:LabVIEW的核心是G语言,一...

    LabVIEW 学习札记 - 第一卷 上

    本札记“LabVIEW学习札记 - 第一卷 上”将带你逐步走进LabVIEW的世界,揭示其核心概念和常见问题。 首先,LabVIEW的核心在于它的G图形化编程语言。与传统的文本编程语言不同,LabVIEW使用的是图标和连线来表示程序...

    Simulink代码生成学习札记.zip

    这个“Simulink代码生成学习札记”可能包含了关于如何使用Simulink从模型直接生成可执行代码的重要知识,这对于工程师和开发者来说是一个极其有用的资源,特别是对于初学者。 Simulink的主要功能之一就是代码生成,...

    Nios II 学习札记

    【Nios II 学习札记】 Nios II 是由 Altera 公司开发的一种软核处理器,广泛应用于 FPGA(Field-Programmable Gate Array)设计中,它提供了高效的嵌入式处理解决方案。Nios II 提供了三种不同的内核类型,分别是 ...

    公司法学习札记.pdf

    公司法学习札记.pdf

    labview 学习札记3a

    "labview 学习札记3a"显然是一个关于LabVIEW的教程资源,旨在帮助初学者掌握这个平台的基础知识,并通过实际工程实例加深理解。 在LabVIEW的学习过程中,有几个关键的知识点是必须掌握的: 1. **基本概念**:理解...

    mysql学习札记.zip

    这份"mysql学习札记.zip"文件显然包含了作者在学习MySQL过程中积累的知识和经验,可能是笔记、示例代码或者教程。虽然没有具体的标签来细化主题,但我们可以根据常见的MySQL学习路径来探讨一些关键知识点。 首先,...

    5-学习札记快速整理软件-使用说明书1

    学习札记快速整理软件是一款专为学习者设计的高效笔记管理工具,旨在帮助用户快速整理、记录和检索学习内容。本文将详细介绍该软件的各个功能、运行环境以及使用方法,以便用户更好地利用这款软件提升学习效率。 **...

    复变函数札记

    《复变函数札记》是作者梁昌洪继《矢算场论札记》(科学出版社,2007)之后的第二本工程数学札记。尽管两书所涉及领域完全不同,但却有着完全一致的目标,即希望在数学和工程之间架设一座可以自如跨越的桥梁。对于...

    EXT学习札记--京华志

    EXT学习札记 ExtJs学习--京华志 京华志出品 必数精华

    labview 学习札记1b

    在"LabVIEW学习札记1b"中,我们可以预期会涵盖以下几个关键知识点: 1. **基本概念**:LabVIEW的基本结构包括前面板和程序框图。前面板是用户与VI(Virtual Instrument)交互的界面,包含各种控件(Controls)如...

    2-学习札记快速整理软件-项目概要1

    《学习札记快速整理软件——打造高效笔记新体验》 学习札记快速整理软件,是一款专为学生群体及需要频繁记录信息的用户设计的APP,旨在解决信息快速记录、整理和分类的难题。这款软件以创新的功能和贴心的设计,...

Global site tag (gtag.js) - Google Analytics