- 浏览: 209526 次
- 性别:
- 来自: 大连
最新评论
-
jacktao219:
赞一个! 好文,但实际测试后发现第一次 浏览器也木有把url ...
Tomcat 7源码学习笔记 -6 encodeURL深度解析补充 -
mengsanjunqq:
Tomcat 7源码学习笔记 -3 Http11Protocol和Http11NioProtocol -
di1984HIT:
写的很好啊~~~
使用nodejs异步方法导致进程无法退出的问题 -
sygjzmh:
...
诡异的prototype -
blogzhoubo:
小蝶兒 写道这样子和直接放在head里有什么区别呐,还是没有解 ...
通过innerHTML动态插入的script无法执行的解决方法
文章列表
在JSP中创建的java bean对象,可以存储在下面几种不同生命周期的容器中:
1. page 当前页面,对应pageContext对象
2. request 当前http请求,对应request对象
3. session 当前的回话,对应session对象
4. application 当前应用,对应application对象
当然,一般情况下,我们不用自己去清除java bean对象,因为系统会根据生命周期来自动清除容器中的对象。
但是,如果因为业务需要,或者尽可能的节省内存开销的话,也可以通过手动清除来尽早清除指定容器中的不用的java bean对象。
清除方 ...
1》首先,说一说为什么要设置html文件的字符集
如果不指定的话,浏览器会使用本地操作系统的字符集,那么,如果你的应用需要支持多国语言的话,就会有问题,比如你的页面里有中文字符,终端用户的本地操作系统的字符集是ISO-8859-1,那么浏览器就会用ISO-8859-1来解码你的html文件。这样就会造成中文乱码。
如果html文件中没有中文字符,但是页面上有表单输入,那么如果录入中文后提交的话,在接下来的画面中也有可能会产生乱码。比如目前的html文件使用的是本地操作系统的ISO-8859-1字符集,你在画面录入中文后提交,迁移到下一个画面的时候(比如是一个JSP文件,request ...
JSP指令包括下面几种:
1.include指令,包含指定的文件内容到当前页面中
<%@ include file="title.jsp"%>
2.page指令,该指令包含的属性较多,下面逐一介绍
2.1 language属性,指定页面中使用的脚本语言种类,目前只支持java
<%@ page language="java"%>
2.2 extends属性,用于指定该JSP生成的servlet继承自哪个父类,必须指定包名加类名
<%@ page extends="mypack ...
脚本元素的作用是使JAVA代码可以直接插入到servlet中(JSP文件编译后生成的servlet)。
有下面3中脚本元素:
1》声明标签,插入JAVA代码
<%! int classInstanceVar = 100; %>
JSP文件编译后,classInstanceVar 会作为servlet类的成员变量。
int classInstanceVar = 100;
2》 脚本标签,插入JAVA代码
<% int localVar = 50; %>
JSP文件编译后,localVar 会作为servlet类中_jspServic ...
JSP中有两种include方法。
1》 <%@ include file="title.jsp" %>
这种方式属于jsp指令,直接把指定的title.jsp文件的内容插入当前位置,相当于拷贝粘贴。
如果多个jsp页面都include同一个title.jsp,那么相当于在每个页面都拷 ...
1》jsp:setProperty的用法
(1)逐一从request中取出参数,然后设置到名字为user的bean的同名属性中。
<jsp:setProperty name="user" property="*"/>
(2)从request中取出userName参数,然后设置到名字为user的bean的userName属性中。
相当于调用user.setUserName(String userName)方法。
<jsp:setProperty name="user" property="us ...
有几种用法,下面逐一讲解:
1》
<%@page import="MyBean.*"%>
<jsp:useBean class="MyBean.TestBean" id="user" scope="session"/>
生成的java代码如下:
MyBean.TestBean user = null;
synchronized (session) {
user = (MyBean.TestBean) _jspx_page_context.ge ...
一.关于tomcat的日志设计,采用了工厂模式,主要的类有下面几个:
org.apache.juli.logging包:
1》Log接口
对外提供的接口,用户使用LogFactory.getLog方法获取的日志对象的抽象。
2》LogFactory类
通过静态的getLog方法,向用户 ...
一般情况下,安装完的Tomcat环境都有一个name为localhost的Host节点:
主机名:localhost
web应用主目录:tomcat主目录下的webapps
日志文件存放目录:tomcat主目录下的logs
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apac ...
使用Tomcat 7缺省的配置,tomcat关闭后重新启动,发现原来的session没有被删掉,用原来的request获取session仍然可以取到。但是并没有配置session持久化。
原因如下:
tomcat的conf目录下有一个context.xml,这是所有web应用共享的配置信息。
里面有这么一段话:
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-- ...
1.过滤器的主要功能是允许我们在request转给某个资源之前(比如:html文件,servlet,JSP文件,图片文件,excel文件等等)做一些事情,然后在response返回给客户端之前做一些事情。功能上有些类似于防火墙,对入口和出口进行严格控制。
public class MyFilter implements Filter {
//tomcat启动,或者context重新加载的时候调用init(先destroy再init)
public void init(FilterConfig filterConfig) throws ServletException {
Sys ...
下面的代码,不加mys.acquire();和mys.release();的时候,各线程会交替输出。
加上的话,各线程会串行输出,说明信号量机制生效了。
MySemaphore.java
interface Semaphore {
void acquire();
void release();
}
public class MySemaphore implements Semaphore{
private StringBuffer runFlag = new StringBuffer("true");
public void ac ...
在servlet里面接收到一个请求以后,处理完毕,根据需要可以有几种选择:
1.直接提交response,比如response.getWriter().println();
这个比较简单,而且不怎么使用,毕竟动态生成html不是很好的选择
2.将请求转给其它的资源(比如:forward到jsp,html,servlet)
这个有两种方法可以选择,但是无论哪种方法,都是转发到当前context(web应用)下面:
(1)ServletRequest#getRequestDispatcher(String path)方法
request.getRequestDis ...
之前提到调用response.encodeURL(String url)方法的时候,如果客户端支持cookie,那么不做任何处理,直接返回传进去的url,因为jsessionid可以写入cookie中,所以不需要url重写。其实所说的客户端支持cookie并不严谨,因为在客户端支持cookie的情况下,调用response.encodeURL(String url)方法,也会遇到对传进去的url进行重写的情况。那么什么情况下会出现这个问题呢?请看下面:
客户端支持cookie,第一次访问某个servlet,这时servlet接收到的request的cookie中没有jsessionid信 ...
在servlet中,当客户端禁用了cookie的情况下,为了保存jsessionid,我们可以采用URL重写的方式把jsessionid追加在url末尾,这样当客户点击链接的时候,就会随着url把jsessionid一起传给服务端,从而实现session机制。那么如何把jsessionid保存在url中呢?方法就是:
1>创建一个session
2>调用response.encodeURL(String url)方法
3>把返回的url嵌入动态生成的html文中返回客户端
HttpSession session = request.getSession(); ...