您的位置:首页 > 职场人生

黑马程序员_JAVA 学习笔记15 WEB篇2

2014-02-19 12:54 281 查看
----------------------
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: