j2EE JSP

Java 服务器页面 (Java Server Page ,JSP) 以扩展名 .jsp 保存,有效地控制动态内容生成,在Java Server Page里面使用 Java 编程语言和类库.HTML 用于表示页面,而 Java 代码用于访问动态内容

JSP执行过程

j2EE JSP_第1张图片

j2EE JSP_第2张图片

1、转译时期(Translation time):验证JSP页面,没有出现错误,将JSP网页转译为 Servlet 源代码(.java)

2、编译时期(Compilation time)将Servlet源代码(.java)编译成 Servlet 类(.class),并报告语法错误 

3、加载和实例化: 编译成功则将servlet类加载到内存中,并对其进行实例化; 

4、jspInit() 执行一次初始化; 

5、jspService() 进行请求处理; 

6、jspDestroy() JSP引擎从服务器中删除servlet实例时,会调用jspDestroy(); 

JSP原始代码中包含了JSP元素和Template(模板) data两类 

Template data指的是JSP引擎不处理的部分,即标记<%……%>以外的部分,例如代码中的HTML的内容等 ,这些数据会直接传送到客户端的浏览器

JSP元素则是指将由JSP引擎直接处理的部分,这一部分必须符合JSP语法,否则会导致编译错误。 

JSP语法

编译器指令(DIRECTIVE)

include

向当前页中插入一个静态文件的内容:

<%@ include file="相对位置" %>

<%@ include file="common/footer.jsp" %>

page

<%@ page 
[ language="java" ] 
[ extends="package.class" ] 
[import="{package.class | package.*},..." ] 
[ session="true | false" ] 
[ buffer="none | 8kb | sizekb" ] 
[ autoFlush="true | false" ] 
 [ isThreadSafe="true | false" ] 
 [ info="text" ] 
 [ errorPage="relativeURL" ] 
[ contentType="mimeType 
    [;charset=characterSet]" | "text/html
    ; charset=ISO-8859-1" ] 
[ isErrorPage="true | false" ] 
%>

1.language="java" 

声明脚本语言的种类,目前只能用"java" 。

2.import="{package.class | package.* },..." 

需要导入的Java包的列表,这些包作用于程序段,表达式,以及声明。下面的包在JSP编译时已经导入了,所以就不需要再指明了:java.lang.* javax.servlet.* javax.servlet.jsp.* javax.servlet.http.*   

3.errorPage="relativeURL" 

设置处理异常事件的JSP文件。 

4.isErrorPage="true | false" 

设置此页是否为出错页,如果被设置为true,你就能使用exception对象

“<%@ page %>”指令作用于整个JSP页面,同样包括静态的包含文件。但是“<%@ page %>”指令不能作用于动态的包含文件,比如 “<jsp:include>” 。

可以在一个页面中用上多个“<%@ page %>”指令,但是其中的属性只能用一次,不过也有例外,那就是import属性。因为import属性和Java中的import语句类似(参照Java Language,import语句引入得是Java语言中的类),所以此属性就能多用几次。

无论把“<%@ page %>”指令放在JSP的文件的哪个地方,它的作用范围都是整个JSP页面。不过,为了JSP程序的可读性,以及好的编程习惯,最好还是把它放在JSP文件的顶部。

taglib指令

引入定制标签库

<%@ taglib uri="URIToTagLibrary" prefix="tagPrefix" %> 

脚本语法(SCRIPTING)

“HTML注释”:<!— comments --> 查看源代码可以看得到

“隐藏注释”:<%-- comments --%> 查看源代码看不到

“声明”

<%! declaration; [ declaration;] ... %>

“表达式”,用于在页面上输出信息  

<%= expression %>

example

 <%! int j = 10; %> 
  <%=j %>

在页面上显示10

“脚本段”

<% 代码 %>


动作语法(ACTION) 

<jsp:forward> 页面跳转

<jsp:forward page={"relativeURL" | "<%= expression %>"} > 
<jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" />
  [<jsp:param … />]
</jsp:forward>

“<jsp:forward>”标签以后的代码,将不能执行。执行到“<jsp:forward>”就会自动跳转。

<jsp:forward page="login.jsp">
	<jsp:param name="userName" value="riso"/>
</jsp:forward>

 <%=request.getParameter("userName") %>

<jsp:include> 包含一个静态或动态文件

<jsp:include page="{relativeURL | <%=expression %>}"   flush="true" >   // 这里必须使用flush="true",不能使用false值。而缺省值为false 
<jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" />
	   [<jsp:param …/>]
</jsp:include>

<jsp:useBean>

<jsp:getProperty>

获取bean中的属性

<jsp:setProperty>

设置bean中的属性

<jsp:useBean id="userid" scope="page" class="com.model.user"></jsp:useBean>
  <%=userid.getUsername() %><br/>
  <%=userid.getPassword() %><br/>
  <% userid.setUsername("newwangweiwei"); %>
  <jsp:getProperty property="username" name="userid"/><br/>
  <jsp:getProperty property="password" name="userid"/><br/>

jsp内置对象

请求对象 request

“request” 对象代表的是来自客户端的请求,例如我们在FORM表单中填写的信息等,是最常用的对象。关于它的方法使用较多的是getParameter、getParameterNames和getParameterValues,通过调用这几个方法来获取请求对象中所包含的参数的值

响应对象 response

“response” 对象代表的是对客户端的响应,也就是说可以通过“response”对象来组织发送到客户端的数据。但是由于组织方式比较底层,所以不建议普通读者使用,需要向客户端发送文字时直接使用“out” 对象即可。

会话对象 session

“session” 对象代表服务器与客户端所建立的会话,当需要在不同的JSP页面中保留客户信息的情况下使用,比如在线购物、客户轨迹跟踪等。“session” 对象建立在cookie的基础上,所以使用时应注意判断一下客户端是否打开了cookie。常用的方法包括getId、 getValue、 getValueNames和putValue等。 

应用对象 application

“application” 对象负责提供应用程序在服务器中运行时的一些全局信息,常用的方法有getMimeType和getRealPath等

页面对象 page

页面上下文对象 pagecontext

输出对象 out

“out” 对象代表了向客户端发送数据的对象,与“response” 对象不同,通过“out” 对象发送的内容将是浏览器需要显示的内容,是文本一级的,可以通过“out” 对象直接向客户端写一个由程序动态生成HTML文件。常用的方法除了pirnt和println之外,还包括clear、clearBuffer、flush、getBufferSize和getRemaining,这是因为“out” 对象内部包含了一个缓冲区,所以需要一些对缓冲区进行操作的方法。

配置对象 config

“config” 对象提供一些配置信息,常用的方法有getInitParameter和getInitParameterNames,以获得Servlet初始化时的参数。

异常对象 exception

j2EE JSP_第3张图片


jsp filter

Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在离开 servlet时处理response

1. 在servlet被调用之前截获; 

2. 在servlet被调用之前检查servlet request; 

3. 根据需要修改request头和request数据; 

4. 根据需要修改response头和response数据; 

5. 在servlet被调用之后截获。

Filter需要在web.xml中进行配置

	<filter>
		<filter-name>filtertest</filter-name>
		<filter-class>com.filter.filtertest</filter-class>
	</filter>
	
	<filter-mapping>
		<filter-name>filtertest</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>


public class filtertest implements Filter {

	@Override
	public void destroy() {
		// TODO Auto-generated method stub

	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		request.setCharacterEncoding("GBK");
		response.setContentType("text/html;charset=GBK");
		response.setCharacterEncoding("GBK");
		System.out.println("this is filter method!!");
		chain.doFilter(request, response);
	}

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub

	}

}


你可能感兴趣的:(jsp,jsp,filter,jsp语法,jsp内置对象,JSP执行过程)