单机搭建WinCE开发条件(三)澳门美高梅手机网站

 【声明】 

     通过前两篇的介绍,我们曾经搭建了WinCE开发条件,并询问了哪些运用远程工具举行相关调试。这一篇,大家尤其健全单机搭建的WinCE开发环境——在WinCE6.0的模拟器中使用串口。

迎接转载,但请保留著作原来出处→_→ 

       WinCE设备中串口的使用频率是一定高的,一般有一个调试串口,而过多实际上行使中与GPS、GSM(GPRS)模块的通信都是透过串口来举行的。在率先篇中,曾介绍过为调试串口创制一个Text
Consol Window,以模拟调试串口。事实上,大家也全然可以映射主机的串口到模拟器中来,方法如下图所示。 

生命壹号:http://www.cnblogs.com/smyhvae/

澳门美高梅手机网站 1

著作来源:http://www.cnblogs.com/smyhvae/p/4065790.html

照耀完成之后,就足以在模拟器中运用串口,跟外围设备举办通信了。 

 

澳门美高梅手机网站 2     

【序列】JSP学习系列作品:(持续更新)

上图是模拟器与2410实验板的串口通信截图,当然,现在你完全可以用模拟器来调节GPS、GSM模块的主次了。

JavaWeb学习(一)—-JSP简介及入门(含汤姆(Tom)cat的运用)

JavaWeb学习(二)—-JSP脚本元素、指令元素、动作元素

JavaWeb学习(三)—-JSP内置对象详解

 

【正文】

呼~~~花了一深夜的光阴,终于把JSP的停放对象的始末学完了,并做好了笔记,方便将来回想。

前些天是11月的尾声一天,小小地总括一下吗,这么些月共刊出博客25篇(排版好勤奋的说),所有内容均由生命壹号本人敲键盘码起。基本是一天一篇,包括国庆的时候也是独霸教研室在攻读,学习的大致内容也是和数据库、JavaWeb有关。毕竟将来搞开发不容许是单机吧,网络的有的是何等的最紧要。下个月要增强学习功用,学习任务要加大,争取早日进入工程执行,嘿嘿~~~

菜鸟加油,恩,说自己自己呢!

骚年矜持,恩,在说您呢!

一、内置对象介绍

JSP内置对象:能够不用注明和成立,就可以直接在JSP页面脚本(Java程序片和Java表明式)中采用的积极分子变量。

这为啥不用生命和创办就可以间接运用啊?这是因为,内置对象必须由扶助JSP的器皿去创设。例如Tomcat就是一个容器。

JSP共有以下9大内置对象:

  • out
  • request
  • response
  • session
  • pageContext
  • application
  • config
  • page
  • exception

前三个是生死攸关,后六个了然即可。这九个放置对象中,有多少个效率域:request、session、application、page。功能域即这多少个目的的生命周期的限制。

 

二、内置对象out

类型:Javax.servlet.jsp.JspWriter

职能:重要用于向客户端输出数据

效率域:page。也就是说,每个页面都有一个和好的out对象。

首要方法:print()/println()/write()    向客户端页面输出数据

举例:

out.write("文字内容"); 

俺们再到D:\apache-tomcat-8.0.14\work\Catalina\localhost目录中去看一下转变的Java源代码:

澳门美高梅手机网站 3

总体版代码如下:

澳门美高梅手机网站 4澳门美高梅手机网站 5

/*
 * Generated by the Jasper component of Apache Tomcat
 * Version: Apache Tomcat/8.0.14
 * Generated at: 2014-10-31 11:14:54 UTC
 * Note: The last modified time of this file was set to
 *       the last modified time of the source file after
 *       generation to assist with modification tracking.
 */
package org.apache.jsp;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;

public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent {

  private static final javax.servlet.jsp.JspFactory _jspxFactory =
          javax.servlet.jsp.JspFactory.getDefaultFactory();

  private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;

  private javax.el.ExpressionFactory _el_expressionfactory;
  private org.apache.tomcat.InstanceManager _jsp_instancemanager;

  public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
    return _jspx_dependants;
  }

  public void _jspInit() {
    _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
    _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
  }

  public void _jspDestroy() {
  }

  public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
        throws java.io.IOException, javax.servlet.ServletException {

final java.lang.String _jspx_method = request.getMethod();
if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET POST or HEAD");
return;
}

    final javax.servlet.jsp.PageContext pageContext;
    javax.servlet.http.HttpSession session = null;
    final javax.servlet.ServletContext application;
    final javax.servlet.ServletConfig config;
    javax.servlet.jsp.JspWriter out = null;
    final java.lang.Object page = this;
    javax.servlet.jsp.JspWriter _jspx_out = null;
    javax.servlet.jsp.PageContext _jspx_page_context = null;


    try {
      response.setContentType("text/html; charset=UTF-8");
      pageContext = _jspxFactory.getPageContext(this, request, response,
                  null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;

      out.write("\r\n");
      out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");
      out.write("<html>\r\n");
      out.write("<head>\r\n");
      out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n");
      out.write("<title>Insert title here</title>\r\n");
      out.write("</head>\r\n");
      out.write("<body>\r\n");

    out.println("文字内容");

      out.write("\r\n");
      out.write("</body>\r\n");
      out.write("</html>");
    } catch (java.lang.Throwable t) {
      if (!(t instanceof javax.servlet.jsp.SkipPageException)){
        out = _jspx_out;
        if (out != null && out.getBufferSize() != 0)
          try {
            if (response.isCommitted()) {
              out.flush();
            } else {
              out.clearBuffer();
            }
          } catch (java.io.IOException e) {}
        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
        else throw new ServletException(t);
      }
    } finally {
      _jspxFactory.releasePageContext(_jspx_page_context);
    }
  }
}

View Code

在这边,我们可以这么了解,一个Jsp文件编译之后就是一个类,而out就相应一个页面对象。

 

三、内置对象request

类型:Javax.servlet.http.HttpServletRequest

讲述:来自客户端的哀告经Servlet容器处理后,由request对象开展打包。注:客户端和服务器的一遍通信就是一遍呼吁(发送请求或取得相应)。

效用域:request。表明,本次请求为止后,它的生命周期 就寿终正寝了。

根本措施:

getParameter(key) 获取提交表单的数据

getParameterValues(key) 获取提交表单的一组数据

request.getRequestDispatcher("list.jsp").forward(request,response) 转发(通过代码的方式进行转发)

request.setAttribute(key,object) 设置请求对象的属性

request.gettAttribute(key) 获取请求对象的属性

request.setCharacterEncoding("UTF-8") 对请求数据重新编码 

俺们接下去将每个方法都介绍一下。

(1)getParameterValues(key)   
获取提交表单的多少

举例:输入用户名密码,并证实正确性。

新建JavaWeb工程Test04,新建request.jsp文件,代码如下:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <form action="request-receiver.jsp">
11         username:<input  type="text" name="user"/><br/>
12         password:<input  type="password" name="pwd"/><br/>
13         
14         <input type="submit" name="登陆"/>        
15     </form>
16 </body>
17 </html>

10至15行:添加表单,在里头输入用户名密码,然后将数据发送至request-receiver.jsp页面来拍卖(第10行的action里面的始末)。

新建request-receiver.jsp文件:

 1 <%
 2 //获取请求数据
 3 String name = request.getParameter("user");
 4 String pwd = request.getParameter("pwd");
 5 System.out.println(name+","+pwd);
 6 
 7 if("smyh".equals(name) && "007".equals(pwd)) {
 8     out.println("登陆成功");    
 9 }else{
10     out.println("errors");
11 }
12 %>

像request-receiver.jsp这样的页面,如果不需要显示在网页上,可以把自动生成的html代码全体去除。

全套过程是如此的:

澳门美高梅手机网站 6

运转程序,当我们在网页输入正确的用户名之后,效果如下:

澳门美高梅手机网站 7

下一场点击“提交”,效果如下:

澳门美高梅手机网站 8

【乱码问题的缓解】

大庭广众我们早已报到成功了,不过此地出现了乱码。原因是:汤姆(Tom)cat默认编码为:iso8859-1。request.jsp页面发出去的数额是UTF-8编码,经过tomcat服务器后,变成了iso8859-1编码,所以需要在request-receiver.jsp将数据再转回来,变成UTF-8编码(那么些题材提到到其它一个放到对象,稍后再讲)。

此外一个题目是,如若我们输入的是闽南语的用户名,也可能现身乱码,可以在request-receiver.jsp文件里,加一句代码让用户名、密码在决定台出口彰显,看一下就知道了。

为釜底抽薪乱码的问题,我们需要在request-receiver.jsp文件中加一句话:

//设置请求方式的编码

request.setCharacterEncoding("UTF-8");

这样的话,就将收获到的数据变成了UTF-8编码。

这时候,假设在控制台出口的用户名还现出乱码,是因为还波及到了此外一个题目:在request.jsp中发送请求,默认是使用get模式,这一个时候,参数就会作为url的一有些共同发给服务器(见上方图片中的url地址),而url的编码很引人注目不是UTF-8。所以,大家需要将其改为post情势。总之,全体版代码如下:

request.jsp:输入用户名密码,并付出给request-receiver.jsp:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <form action="request-receiver.jsp" method="post">
11         username:<input  type="text" name="user"/><br/>
12         password:<input  type="password" name="pwd"/><br/>
13         
14         <input  type="submit" name="登陆"/>        
15     
16     </form>
17 </body>
18 </html>

第10行,将提交情势改为post,而非默认的get模式。

request-receiver.jsp:验证用户名、密码的没错

 1 <%
 2 //获取请求数据
 3 //设置请求方式的编码
 4 request.setCharacterEncoding("UTF-8");
 5 String name = request.getParameter("user");
 6 String pwd = request.getParameter("pwd");
 7 System.out.println(name+","+pwd);
 8 
 9 if("smyh".equals(name) && "007".equals(pwd)) {
10     out.println("登陆成功");    
11 }else{
12     out.println("errors");
13 }
14 %>

第4行,将获取到的请求数据恢复生机为UTF-8的办法。

(2)getParameterValues(key)   
获取提交表单的一组数据

我们现在往request.jsp中添加一组单选按钮:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <form action="request-receiver.jsp" method="post">
11         username:<input  type="text" name="user"/><br/>
12         password:<input  type="password" name="pwd"/><br/>
13         <input type="checkbox" name="likes" value="羽毛球">羽毛球
14         <input type="checkbox" name="likes" value="摄影">摄影
15         <input type="checkbox" name="likes" value="音乐">音乐
16         <br/>
17                 
18         <input  type="submit" name="登陆"/>        
19     
20     </form>
21 </body>
22 </html>

13至15行是添加的六个单选按钮,构成了数组“likes”。

接下来在request-receiver.jsp中赢得那一个数组,并在控制台出口:

 1 <%
 2 //获取请求数据
 3 //设置请求方式的编码
 4 request.setCharacterEncoding("UTF-8");
 5 String name = request.getParameter("user");
 6 String pwd = request.getParameter("pwd");
 7 System.out.println(name+","+pwd);
 8 
 9 String[] likes = request.getParameterValues("likes");
10 for(int i =0;i<likes.length;i++) {
11     System.out.println(likes[i]);
12 }
13 
14 if("smyh".equals(name) && "007".equals(pwd)) {
15     out.println("登陆成功");    
16 }else{
17     out.println("errors");
18 }
19 %>

运转后,输入对应值:

澳门美高梅手机网站 9

后台输出如下:

澳门美高梅手机网站 10

(3)request.getRequestDispatcher(“list.jsp”).forward(request,response)  
转发(通过代码的主意进行转账)

(4)request.setAttribute(key,object)  
设置请求对象的习性

(5)request.gettAttribute(key)   
获取请求对象的属性

现今的情状是,request.jsp负责发多少,request-receiver.jsp负责处理数据(判断用户名密码的科学),即便用户名密码正确,这大家就因而request.getRequestDispatcher(request-success.jsp),将请求转发给request-success.jsp页面,展现出“登陆成功”的服从。

request.jsp代码不变:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <form action="request-receiver.jsp" method="post">
11         username:<input  type="text" name="user"/><br/>
12         password:<input  type="password" name="pwd"/><br/>
13                 
14         <input  type="submit" name="登陆"/>        
15     
16     </form>
17 </body>
18 </html>

request-receiver.jsp代码如下:

 1 <%
 2 //获取请求数据
 3 //设置请求方式的编码
 4 request.setCharacterEncoding("UTF-8");
 5 String name = request.getParameter("user");
 6 String pwd = request.getParameter("pwd");
 7 System.out.println(name+","+pwd);
 8 
 9 if("smyh".equals(name) && "007".equals(pwd)) {
10     out.println("登陆成功");    
11     request.setAttribute("age", "22");
12     request.getRequestDispatcher("request-success.jsp").forward(request, response);
13     
14 }else{
15     out.println("errors");
16 }
17 %>

12行:假若用户名密码正确,就将这么些请求转发给”request-success.jsp”。forward(request,
response)表示目前的哀求对象和当前的响应对象。

11行:在转发在此之前,大家得以给那个请求添加一些性质,然后在request-success.jsp页面中吸纳。

新建request-success.jsp,代码如下:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     欢迎你,<%=request.getParameter("user") %> <br/>
11     年龄:<%=request.getAttribute("age") %>    
12     
13 </body>
14 </html>

10行:获取在此以前的用户名,突显“欢迎你”,表示登陆成功。

11行:获取获取请求对象的属性。

运转程序,输入用户名密码后,提交,出现如下界面:(注意url)

澳门美高梅手机网站 11

只要在request-receiver.jsp中没有插手第01、02行的编码情势(即页面的编码模式),最终突显的页面将会冒出乱码:

澳门美高梅手机网站 12 

 

四、内置对象resonpse

类型:Javax.servlet.http. HttpServletResponse

讲述:它封闭了JSP 的响应,然后被发送到客户端以响应客户的伸手。

作用域:page

根本模式:

response.sendRedirect("页面"):页面跳转。注意,之前的forward是转发,这里是跳转,注意区分。

response.setCharacterEncoding("gbk"):设置响应编码

留意,response.sendRedirect(“页面”)这么些法子,是落实页面跳转,而不是转账

【举例】现在亟需做的是,如若登陆战败,我们就跳到此外一个界面,而不再是转账了。

request.jsp的代码仍旧不变。

request-receiver.jsp的代码如下:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%
 4 //获取请求数据
 5 //设置请求方式的编码
 6 request.setCharacterEncoding("UTF-8");
 7 String name = request.getParameter("user");
 8 String pwd = request.getParameter("pwd");
 9 System.out.println(name+","+pwd);
10 
11 
12 if("smyh".equals(name) && "007".equals(pwd)) {
13     out.println("登陆成功");    
14     request.setAttribute("age", "22岁");
15     request.getRequestDispatcher("request-success.jsp").forward(request, response);
16     
17 }else{
18     //out.println("errors");
19     response.setCharacterEncoding("UTF-8"); //设置响应的编码
20     //设置响应内容的类型
21     response.setContentType("text/html;charset=UTF-8");
22     response.sendRedirect("response.jsp");
23 }
24 %>

19行至22行是增长的代码:倘若用户名、密码错误,就调到response.jsp页面去。

新建response.jsp,代码如下:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     不好意思,登陆失败。
11 </body>
12 </html>

注意第06行的“content=text/html”,表示:指定服务器重回的数据类型。

运转程序,当输入的用户名、密码错误后,效果如下:(注意url)

澳门美高梅手机网站 13

重定向和转发:

重定向的意味是说,当页面进行跳转之后,request和response的生命周期已经终结,完全交由下一个页面去处理了(连url都变了);而转向的时候,还足以往request其中添加指导参数(url不变)。

 

五、session(会话)

类型:Javax.servlet.http.HttpSession

叙述:表示一个会话,用来保存用户音讯,以便跟踪每个用户的情状。(不要用来保存业务数据,request)

概念:是指在一段时间内客户端和服务器之间的多样的连带的互动过程。

作用域:session。

只若是率先次接触“会话”那多少个定义,需要再行一下。说白了,客户端与服务器之间可能需要不断地开展数量交互(请求与相应),那些进程就能够知晓为一段回话。汤姆cat默认的对话时间为30分钟,这段时间内假设没有相互,会话停止;下次客户端一旦发送请求,重新创设会话。当客户端首次发送请求的时候,才会创立一个对话。session的生命周期比request长

重大措施:

session.getid():取得session的id号.id由tomcat自动分配。

session.isnew():判断session时候是新建的

session.setAttribute(key,object):往当前会话中设置一个属性

session.getAttribute(key):获取当前会话中的一个属性

session.removeAttribute(key):删除当前会话中的属性

session.setMaxInactiveInterval(1000*60*30):设置当前会话失效时间(ms) 。Tomcat默认的会话时间为30分钟。

session.invalidate():初始化当前会话对象(一般在推出的时候使用,可以删除当前会话的数据) 

对话停止的规范之一:

  • 服务器关闭
  • 会话过期(一段对话时间默认为30分钟)
  • 手动终止会话

【举例】为维持用户登录的图景,我们得以把用户的数量音信保存在session中。

request.jsp登录表单的代码如下:用户登录界面

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <form action="session.jsp" method="post">
11         username:<input  type="text" name="user"/><br/>
12         password:<input  type="password" name="pwd"/><br/>
13                 
14         <input  type="submit" name="登陆"/>            
15     </form>
16 </body>
17 </html>

session.jsp代码如下:(核心代码)

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%
 4 //获取请求数据
 5 //设置请求方式的编码
 6 request.setCharacterEncoding("UTF-8");
 7 String name = request.getParameter("user");
 8 String pwd = request.getParameter("pwd");
 9 
10 if("smyh".equals(name) && "007".equals(pwd)) {
11     //将用户名、密码保存到当前会话当中
12     session.setAttribute("name", name);
13     session.setAttribute("pwd", pwd);
14     //如果登陆成功,就跳到session-success.jsp页面
15     response.sendRedirect("session-success.jsp");    
16     
17     System.out.println(session.getId()); //获取当前回话的id
18     //session.setMaxInactiveInterval(1000*60*30); //设置当前session的有效时间
19     //session.invalidate()  //设置session重新初始化,在系统退出时使用
20 }else{
21     response.sendRedirect("fail.jsp");
22 }
23 %>

12、13行:将用户名、密码保存到近年来对话当中,只要这段对话没有停止,就足以从session中拿到值。

15行:若是用户名密码正确,就跳到session-success.jsp界面

18行:设置当前session的对话时间,但是貌似不在代码里设置,而是在web.index里安装:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
 3   <display-name>Test04</display-name>
 4   <welcome-file-list>
 5     <welcome-file>index.html</welcome-file>
 6     <welcome-file>index.htm</welcome-file>
 7     <welcome-file>index.jsp</welcome-file>
 8     <welcome-file>default.html</welcome-file>
 9     <welcome-file>default.htm</welcome-file>
10     <welcome-file>default.jsp</welcome-file>
11   </welcome-file-list>
12   
13   <!-- 设置当前sessionn的有效时间(分钟) -->
14   <session-config>
15      <session-timeout>30</session-timeout>     
16   </session-config>
17 </web-app>

14行至16行是自我设置的对话时间,单位为min。

session-success.jsp代码如下:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <%
11         String name = (String)session.getAttribute("name");
12         String pwd = (String)session.getAttribute("pwd"); 
13         out.println("登陆成功");
14         out.println(name+","+pwd);
15         System.out.println(session.getId()); //获取当前回话的id
16     %>
17 
18 </body>
19 </html>

15行:获取当前对话的id,这些id和session.jsp中18行的id应该是同一个。

签到失利的界面fail.jsp的代码我就不写了。

运作程序,输入用户名密码,提交,会跳到session-success.jsp:

澳门美高梅手机网站 14

因为是同一个对话,所将来台输出的id也是同一个:

澳门美高梅手机网站 15

明日大家清楚了,request中得以存数据,session中也得以存数据。假诺是保存用户名音信等,能够存到session中;假诺只需要传递数据(从这一个页面传到另一个页面),就足以放在request中转化出来,避免内存浪费。

 

六、内置对象pageContext

类型:javax.servlet.jsp.PageContext

叙述:本JSP的页面上下文。

作用域:page

注:上下文的明亮:上下文可以交换到当下页面所有的音信。

大家先来回顾一下原有的request.jsp代码:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <form action="session.jsp" method="post">
11         username:<input  type="text" name="user"/><br/>
12         password:<input  type="password" name="pwd"/><br/>
13                 
14         <input  type="submit" name="登陆"/>            
15     </form>
16 
17 </body>
18 </html>

当今将地点的代码改成下边的这些样子:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <form action="<%=request.getContextPath()%>/session.jsp" method="post">
11         username:<input  type="text" name="user"/><br/>
12         password:<input  type="password" name="pwd"/><br/>
13                 
14         <input  type="submit" name="登陆"/>            
15     </form>
16 
17     <h2>pageContext对象</h2>
18     <%
19     //通过PageContext上下文对象获取当前页面的其他内置对象
20     pageContext.getRequest();
21     pageContext.getResponse();
22     pageContext.getSession();
23     pageContext.getOut();
24     String path = request.getContextPath();
25     out.println("当前上下文的绝对路径:"+path);    
26     %>
27 
28 </body>
29 </html>

20至23行:通过PageContext上下文对象得到当前页面的别样内置对象

24行:通过request.getContextPath()获取当前文件的相对路径。此时,可以在第10行写上session.jsp文件的相对路径(),此前都是用相对路径写的,是因为文件都在平等目录下。假若jsp文件在其他的公文夹,通过request.getContextPath()来拿到路径就优秀有益了,制止书写错误。程序运行后,效果如下:

澳门美高梅手机网站 16 

 

七、内置对象application

类型:javax.servlet.ServletContext

叙述:从servlet配置对象拿到的servlet上下文

作用域:application

这一个目的的生命周期是最长的。服务器启动的时候就会创设application对象。从服务器存在到服务器终止,都直接存在,且只保留一个目标,所有用户共享一个application。不是很常用。

举例:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 
11     <h2>application对象</h2>
12     <%
13     //一个应用程序只有一个application对象
14     //在服务器启动时创建,到服务器关闭时销毁
15     //所有客户端共享一份
16     String serverPath = application.getContextPath();//获取当前应用程序的路径
17     out.println(serverPath);
18     //向application对象添加数据
19     application.setAttribute("", "");
20     
21     %>
22 
23 </body>
24 </html> 

 

 

八、内置对象config

类型:javax.servlet.ServletConfig

描述:本JSP的 ServletConfig

作用域:page

注:代表安排对象,基本用不到。

 

九、内置对象page

类型:java.1ang.Object

叙述:实现拍卖本页当前恳请的类的实例(javax.servlet.jsp.HttpJspPage),转换后的Servlet类本身

作用域:page

 

十、内置对象exception

类型:java.lang.Exception

叙述:本JSP页面的要命对象

作用域:page

JSP常见错误状态码:

403:禁止访问。比如IP地址被驳回,站点访问被拒绝等

404:找不到。没有找到文件或目录

500:服务器由于遭逢错误而不可以完成该请求,Web服务器太忙

举例:

新建一个荒唐页面error.jsp:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8" isErrorPage="true"%> 
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <h2>错误信息</h2>
11     错误信息为:<%=exception%>
12 </body>
13 </html>

第02行:必须经过isErrorPage=”true”指定此页面为不当页面,否则出现了第11行的exception,程序就会报错。

新建此外一个页面use-eception.jsp:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8" errorPage="error.jsp" %>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 <%
11     int[] num = {9,2,3,2,8};
12     for(int i =0;i<=num.length;i++){
13         out.println(num[i]);
14     }
15 %>
16 
17 </body>
18 </html>

咱俩有意识在11至14行写一段错误的代码;

02行:命令
errorPage=”error.jsp”,表示指定错误页面为error.jsp,假使本页面发生错误,就会跳到error.jsp页面中去。

程序运行后,效果如下:

澳门美高梅手机网站 17

不过,实际程序中,一般不这样写,因为工作是写在类里,假若爆发错误,将利用另外的措施来拍卖,这就未来再说咯~~~

发表评论

电子邮件地址不会被公开。 必填项已用*标注