javaweb的小知识点

1,

org.apache.commons.dbcp.BasicDataSource是哪个包里的?

commons-dbcp.jar、commons-pool.jar、用的spring吧,少了这两个包,主要是用作数据连接池的。

2,

request.getRequestURL()是得到地址上的地址,但不包括参数信息

如http://127.0.0.1:8888/food-search/foodtestresult.jsp

request.getQueryString()是得到参数信息,但不包括前面的地址

page=1&labname=&labadd=%BA%D3%B1%B1%CA%A1&labdirector=&contact=&keyword=

3,

Networkerror IOException: Address already in use:

错误信息是一個連結未結束程式就企圖再次連接
Statements没有关闭。

也可能是其它的地方也已经使用了这个地址,比如说使用jsp时需要用到一个连接,然后被占用了,只是猜想

4,

localpath=localpath.replaceAll(" ", "%20");//因为空格不能当做网址,要把它进行加码

5,

<%@ page contentType="text/html;这个一定要加,然后编码是charset=GBK"

<%@page contentType="text/html;charset=GBK"%>对的操作

<%@ pagelanguage="java"pageEncoding="gbk"%>错的操作

6,

使用批处理的方式进行sql的操作,批处理的时候只能批处理一个ps的实例,所以我们要把ps放在循环的外面才行

String upsql="update chemDictionary set solubility=? wherecas=?";

       ps=con.prepareStatement(upsql);

       while(rs.next()){

           solubility=rs.getString("solubility");

           solubility=solubility.replaceAll("<TD bgColor.+?</li>","");

           ps.setString(1,solubility);

           ps.setString(2, rs.getString("cas"));

           ps.addBatch();

       }

7, jsp 的静态变量的使用

不能够放在<%%>里面,应该要放在<%!%>里面

8,

select @@identity得到上一次插入记录时自动产生的ID

9,

rs.next()如果select 字段是没有数据和记录的,那么就不会执行循环里面的内容,

但是你如果是select count(*) count的话如果有记录的话rs.getInt(“count”)的结果是1否则是0,那不管怎么样都是有结果的,所以还是会执行while循环里面的

10,

在jsp中使用PreparedStatement就不需要防止SQL注入了

对,他把SQL的格式固定了,只让传参数,实现机制不同,注入只对sql语句的准备(编译?)过程有破坏作用,而ps已经准备好了,执行阶段只是把输入串作为数据处理,不再
需要对sql语句进行解析,准备,因此也就避免了sql注入问题.

如果你使用预编译语句.你传入的任何内容就不会和原来的语句发生任何匹配的关系.只要全使用预编译语句,你就用不着对传入的数据做任何过虑.而如果使用普通的statement,有可能要对drop,;等做费尽心机的判断和过虑.

11, 执行 execute(), 会返回 boolean , 如果是 true 表示你执行的是查询 (select) 操作 , 如果是 false, 表示你执行的是更新操作啊 ( DDL DML 语句啊 )

12,

采用resultset游标处理记录时,应该将游标的打开方式设置为FORWARD_READONLY模式(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY),否则会把结果缓存在JVM里,造成JVM Out of memory问题。

13,

pstmt.setFetchSize是什么

是设置ResultSet每次向数据库取的行数
但是你要这样还是可以把所有的数据都取出来,这个只是优化了,取不完数据的情况下

setMaxRows():是设置Resultset最多返回的行数

14,

使用ajax会有缓存,可以使用下面的进行清除:

response.setHeader("Pragma""No-cache");//清楚jaxa的缓存

response.setHeader("Cache-Control""no-cache");

response.setDateHeader("Expires", 0);

15,

DAO.execute("update company set islock=(case when islock=0 then 1 else 0 end)where id=?",new Object[]{id});

16,

得到在插入数据的时候得到返回值


17,

Sql语句去掉空格

select rtrim(ltrim(Code))+rtrim(ltrim(Remark))from t

18,

1.TYPE_FORWORD_ONLY,只可向前滚动;
2.TYPE_SCROLL_INSENSITIVE,双向滚动,但不及时更新,就是如果数据库里的数据修改过,并不在ResultSet中反应出来。
3.TYPE_SCROLL_SENSITIVE,双向滚动,并及时跟踪数据库的更新,以便更改ResultSet中的数据

19,

Request在多个网站之间是可以进行传递的但是前提是他们之间的编码必须是一致的,否则的你可以新建一个jsp页面,编码用对方网站的编码,得到值后,然后seAtrabute转发到另一个页面从而得到里面的值

20,

很多网站的url上都加Math.random();干什么用的?

防止IE缓存,因为随机地址的存在,可以确保每次访问的URL都不会被缓存起

21,

Sqlservet中增加自增长字段id

alter table chemDictionary4_1 addidintidentity(1,1)

22,

rs.isAfterLast()是一种特殊的状态,表征已到达结果集的结尾,此时你如果调用rs.next()就会抛出异常

23,

ServletStruts2的交互

http://blog.csdn.net/icearmour/article/details/6711084


24,过滤器的执行顺序


25、


27、

在web.xml中配置:

	<!-- 去除JSP文件中编译产生的空行 -->
    <jsp-config>
        <jsp-property-group>
            <url-pattern>*.jsp</url-pattern>
            <trim-directive-whitespaces>true</trim-directive-whitespaces>
        </jsp-property-group>
    </jsp-config>

	<!-- 异常处理 -->
	<error-page>
		<error-code>404</error-code>
		<location>/jsp/error/404.jsp</location>
	</error-page>
	<error-page>
		<error-code>500</error-code>
		<location>/jsp/error/500.jsp</location>
	</error-page>

28、

public  static  void  setWebAppRootSystemProperty(ServletContext servletContext) throws  IllegalStateException  {
        String  param = servletContext.getInitParameter(WEB_APP_ROOT_KEY_PARAM);
        String  key = (param != null  ? param : DEFAULT_WEB_APP_ROOT_KEY);
        String  oldValue = System .getProperty(key);
        if  (oldValue != null ) {
            throw  new  IllegalStateException ("WARNING: Web app root system property already set: "  + key + " = "  +
                                                                
            oldValue + " - Choose unique webAppRootKey values in your web.xml files!" );
        }
        String  root = servletContext.getRealPath("/" );
        if  (root == null ) {
            throw  new  IllegalStateException ("Cannot set web app root system property when WAR file is not 
expanded");
        }
        System .setProperty(key, root);
        servletContext.log("Set web app root system property: "  + key + " = "  + root);
    }
从代码看出,该方法其实就是把该web application的根目录的绝对文件路径作为属性保存在 System的属性列表中。该属性的名字,由web.xml文件中的名为"webAppRootKey"的参数值指出。如果不在web.xml中定义 webAppRootKey参数,那么属性名就是缺省的"webapp.root"





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值