黑马程序员_JAVA 学习笔记15 WEB篇2
2014-02-19 12:54
281 查看
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net
SP的执行流程, 首先用户发送一个请求给JSP页面,然后由服务器转化为一个java文件,实质就是一个servlet,然后再去进行编译和执行得到 最后 的结果,最后才返回给用户最后 的执行结果。
![](https://img-blog.csdn.net/20140219125252875?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDIzOTYxNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
上面每刷新页面,时值的变化为 3 3 2 3 1 3 0 3
为什么会这样? 因为首先声明是声明在成员变量的位置,而下面的b则在方法的位置,又因为jsp的执行机制与servlet单实例的原因,因为未修改过jsp页面,所以每次执行时都是执行已经生成的.class文件,去执行的是同一个servlet实例,所以才会出现这样的结果。因为servlet为单实例,所以一般这样成员变量的值就只有一个,每个用户都会访问互它,而脚本段中的值则是局部变量,每个用户访问的时候各有一份,互不影响。
Page指令:
<body>
<jsp:forward page = "forward2.jsp">
<jsp:param name="username" value= "zhangsan"></jsp:param>
</jsp:forward>
</body>
Forward2:
<body>
<%
String username = request.getParameter("username");
out.println(username);
%>
</body>
编译后的jsp文件,可以看出,forward执行之后,就直接return,结束了,所以放在forward之后的代码都不会去执行了。
下面是<jsp:include>标签:
<body>
<%@ include file="include2.jsp" %>
<jsp:include page = "include2.jsp">
<jsp:param name = "username" value = "lisi"></jsp:param>
</jsp:include>
</body>其中jsp:include标签,可以向被包含的页面传递参数,是@include所不支持的。
下面是include2.jsp
<body>
<%
String username = request.getParameter("username");
out.println(username);
%>
</body>
,现在让我们先用<%@ include file=”include2.jsp” %>这种形式引入include2.jsp这个文件。你想会出现什么问题了吗?此时出现
4000
了错误提示:
HTTP Status 500 ?
org.apache.jasper.JasperException: / include2.jsp(0,0) Page directive: can't have multiple occurrences of contentType
以下还有一堆错误,但我们只要看这里就知道问题的所在了。状态码为http 500服务器内部错误。再看下面的提示。在include2.jsp页面中不能指定多个contentType.
原因就在这里了。是因为在翻译阶段, include2.jsp文件的代码被原封不动地加入到了include2.jsp页面从而合成一个文件。合成后的文件中就会相同的:
<%@ page language=”java” contentType=”text/html;charset=gb2312”%>
这句代码。解决的办法是把include2.jsp文件中的这句删掉。刷新后再请求include1.jsp页面.
下面是处理数字异常的代码:
<body>
<form>
<jsp:forward page = "biaoGe2.jsp">
<jsp:param name = "hang" value="a"></jsp:param>
<jsp:param name = "lie" value="a"></jsp:param>
</jsp:forward>
</form>
</body>
<body>
<table border = "1">
<%
int hang = 0;
int lie = 0;
int a = 1;
try{
hang = Integer.parseInt(request.getParameter("hang"));
lie = Integer.parseInt(request.getParameter("lie"));
}
catch(Exception e)
{
out.println("请输入数字。");
//注意,这个地方要return 否则会继续往下执行。
return;
}
for(int i = 0; i < hang; i++)
{
%>
<tr>
<%
for(int j = 0; j < lie; j++)
{
%>
<td><%=a++ %></td>
<%
}
%>
</tr>
<%
}
%>
</table>
</body>
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net
SP的执行流程, 首先用户发送一个请求给JSP页面,然后由服务器转化为一个java文件,实质就是一个servlet,然后再去进行编译和执行得到 最后 的结果,最后才返回给用户最后 的执行结果。
上面每刷新页面,时值的变化为 3 3 2 3 1 3 0 3
为什么会这样? 因为首先声明是声明在成员变量的位置,而下面的b则在方法的位置,又因为jsp的执行机制与servlet单实例的原因,因为未修改过jsp页面,所以每次执行时都是执行已经生成的.class文件,去执行的是同一个servlet实例,所以才会出现这样的结果。因为servlet为单实例,所以一般这样成员变量的值就只有一个,每个用户都会访问互它,而脚本段中的值则是局部变量,每个用户访问的时候各有一份,互不影响。
Page指令:
<body>
<jsp:forward page = "forward2.jsp">
<jsp:param name="username" value= "zhangsan"></jsp:param>
</jsp:forward>
</body>
Forward2:
<body>
<%
String username = request.getParameter("username");
out.println(username);
%>
</body>
编译后的jsp文件,可以看出,forward执行之后,就直接return,结束了,所以放在forward之后的代码都不会去执行了。
下面是<jsp:include>标签:
<body>
<%@ include file="include2.jsp" %>
<jsp:include page = "include2.jsp">
<jsp:param name = "username" value = "lisi"></jsp:param>
</jsp:include>
</body>其中jsp:include标签,可以向被包含的页面传递参数,是@include所不支持的。
下面是include2.jsp
<body>
<%
String username = request.getParameter("username");
out.println(username);
%>
</body>
,现在让我们先用<%@ include file=”include2.jsp” %>这种形式引入include2.jsp这个文件。你想会出现什么问题了吗?此时出现
4000
了错误提示:
HTTP Status 500 ?
org.apache.jasper.JasperException: / include2.jsp(0,0) Page directive: can't have multiple occurrences of contentType
以下还有一堆错误,但我们只要看这里就知道问题的所在了。状态码为http 500服务器内部错误。再看下面的提示。在include2.jsp页面中不能指定多个contentType.
原因就在这里了。是因为在翻译阶段, include2.jsp文件的代码被原封不动地加入到了include2.jsp页面从而合成一个文件。合成后的文件中就会相同的:
<%@ page language=”java” contentType=”text/html;charset=gb2312”%>
这句代码。解决的办法是把include2.jsp文件中的这句删掉。刷新后再请求include1.jsp页面.
下面是处理数字异常的代码:
<body>
<form>
<jsp:forward page = "biaoGe2.jsp">
<jsp:param name = "hang" value="a"></jsp:param>
<jsp:param name = "lie" value="a"></jsp:param>
</jsp:forward>
</form>
</body>
<body>
<table border = "1">
<%
int hang = 0;
int lie = 0;
int a = 1;
try{
hang = Integer.parseInt(request.getParameter("hang"));
lie = Integer.parseInt(request.getParameter("lie"));
}
catch(Exception e)
{
out.println("请输入数字。");
//注意,这个地方要return 否则会继续往下执行。
return;
}
for(int i = 0; i < hang; i++)
{
%>
<tr>
<%
for(int j = 0; j < lie; j++)
{
%>
<td><%=a++ %></td>
<%
}
%>
</tr>
<%
}
%>
</table>
</body>
相关文章推荐
- 黑马程序员java学习笔记——数组
- 黑马程序员-学习笔记1-java程序的特性
- 黑马程序员--java学习笔记第十天
- 黑马程序员java学习笔记——正则表达式、反射
- 黑马程序员 java学习笔记——多线程2
- 黑马程序员 java学习笔记——IO流1
- 黑马程序员_毕向东_Java基础视频教程学习笔记(五)
- 黑马程序员java学习笔记之四(java多线程总结)
- 黑马程序员——JAVA学习笔记——反射机制(下)
- 黑马程序员 java学习笔记3-IO流之字节流与装饰设计模式
- 黑马程序员—1—Java基础:环境变量学习笔记和心得体会
- 黑马程序员学习笔记之五(java中的泛型)
- 黑马程序员—6—Java基础:内部类学习笔记和心得体会
- 黑马程序员 java学习笔记——javaBean
- 黑马程序员-自己总结的java学习笔记(2)java语句基础。
- 黑马程序员--Java基础学习笔记之抽象类和接口、内存结构分析、Java APIs
- 黑马程序员_毕向东_Java基础视频教程学习笔记(十)
- 黑马程序员--Java基础学习笔记【文件操作、递归】
- 黑马程序员--Java基础学习笔记【继承、多态】
- 黑马程序员_学习笔记第1天—java环境搭建和dos基本命令