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

Winform混合式开发框架,是平栽支持分布式部署的动模式,支持直接连接数据库,访问远程WCF服务,访问远程Web
API服务等服务的综合性框架,根据不同之需要使不同的多少接口,是一个适应性很普遍的施用框架。
 混合式开发框架它自身是一个整机的工作体系外,它外围的持有辅助性模块(如通用权限、通用字典、通用附件管理、通用人员管理、通讯录管理……)均都落实了这种混合型的框架,因此采取大有益。

 【声明】 

1、多种数目联网方式

《混合式开发框架》混合了民俗《Winform开发框架》、《WCF开发框架》和Web
API接口框架的表征,可以于一直看数据库、利用WCF服务获取数据、利用Web
API服务获取数据三者之间自由切换,统一了系统界面层对作业服务之调用模式,所有组件模块均贯彻三种方式的调用,是一致种植弹性化非常好之框架下,既可用以单机版软件要因局域网内的使软件,也得以用来分布式技术的互联网环境下,是均等种植成熟稳定、安全高速之技巧框架。

澳门美高梅手机网站 1

澳门美高梅手机网站 2

由于混合型框架,既可以用于传统Winform系统开发,也可用来WCF分布式系统开发,还可用于轻型高效之Web
API的分布式系统开发,因此环境适应性强;而且由于模块具有这些特点,可重用性更强,特别对通用性的模块,更是拥有无可取代的优越性。

 

迎接转载,但求保留文章原来出处→_→ 

2、独自布置,更不见的代码修改

夹框架所有通用模块,如果是通过WCF或者Web
API服务接通的,那么客户端模块都用配置好相应之顾地址。

WCF服务连接,通过单独布置文件进行安排WCF的连,减少主配置文件的繁杂;

澳门美高梅手机网站 3

Web
API每个服务之总是地址也是得经配备文件进行点名,根据需要采用HTTP或者HTTPS协议进行多少传。

澳门美高梅手机网站 4

这些连的布局,都是独自在在不同之文书中,这样好好集中修改,也惠及通过程序界面进行配置调整。如在混框架之中,提供了一个管理界面,用来管理这些接口的切换和布置参数的。

澳门美高梅手机网站 5

其中相关的接口地址参数,可以在保管界面内统一开展保障修改。

澳门美高梅手机网站 6

 

身壹号:http://www.cnblogs.com/smyhvae/

3、提供多种重头戏界面布局方式

夹框架提供多种模块调用方式,可以通过事先布置好之菜单,以插件方式动态构建对应之菜系按钮,并碰调用对应之插件模块进行亮;也足以遵循正常的增长菜单按钮方式开展职能按钮布局。

错落框架主体界面同时也供多界面布局方式,可以以正统的顶栏菜单模式展示,如下所示。

澳门美高梅手机网站 7

啊得以于左边放置类似OutLookBar的效力条,在放对应之菜系功能树,这样好显得更多之功能模块,适用于系统功能较为复杂的气象采取。

澳门美高梅手机网站 8

 

文章来源:http://www.cnblogs.com/smyhvae/p/4065790.html

4、代码生成工具的三合一

整整框架的动开发,代码生成工具Database2Sharp是灵魂,它围绕在不同的框架,根据规划好之数据库信息,生成主体框架信息,把不同类型的类公事在不同之项目遭到,实现快速的框架增量开发;另外所有框架的Winform界面和Web界面,都得快捷生成,稍微调整下即可实现专业性界面的设计开发工作,并能迅速编译运行起来,从而实现高效、高效、统一之框架下开发。

1)主体框架代码的变迁

EnterpriseLibrary代码生成时一个整体性项目代码的转操作,它能够依据规划好数据库信息与模板文件,生成一个完整性非常高之路。一般做我们的Winform开发框架WCF开发框架、混合型开发框架抑或Web开发框架,进行增量式的品种开支,效率又强,而且得好动用更多已经付出好之、现成的机件模块的合并,完美的整合,以及模块化的包装,能拉动吃您无限的支付乐趣同时,使得项目无论从代码风格、用户界面、设计理念,都能够保持好好之联结,快速优雅的好碰到的花色。

澳门美高梅手机网站 9

澳门美高梅手机网站 10

代码生成工具,生成整体性的混合型框架项目如下所示,只是没下图的界面部分,这有些每当实际上支付过程遭到,结合我之混合型框架案例进行整治并即可,另外也可以界使用Database2Sharp进行Winform界面的付出,这样整体性就很方便操作了:

澳门美高梅手机网站 11

澳门美高梅手机网站 12

 

2)界面代码的浮动

界面开发,无论对于Web开发,还是Winform开发,都需要消耗一定的日子,特别对一个数据库字段比较多的界面,一般就用以编排界面上布置的更多之控件来开多少显示,每次碰到这个,都发生点头痛,反复的教条操作为人挺累,也够呛辛苦,但是还要不能不这么做。

鉴于数据库字段和界面的排版都发出早晚之涉嫌关系,因此可以由此代码生成工具Database2Sharp的数据库首批数据,包含表名称、备注信息、字段列表,以及每个字段的名、备注、类型等信息,构造一个基础的界面,把更机械的局部为快速完成,这就是本身所说之界面快速生成。当然,对于精美的界面,机械的生成肯定不可知满足我们的需要,因此真正的界面需要以这基础及改到一下,但是由重复劳动部分,已经让工具处理掉了,因此,界面开发效率会大大提高。

澳门美高梅手机网站 13

Winform界面可以变标准的列表展示界面,也得以生成主从表界面,基本上适应了多数的情。

澳门美高梅手机网站 14

澳门美高梅手机网站 15

 

 

【系列】JSP学习系列文章:(持续更新)

JavaWeb学习(一)—-JSP简介和入门(含Tomcat的动)

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

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

 

【正文】

呼~~~花了同一下午之日子,终于将JSP的放置对象的情学完了,并搞好了笔记,方便以后回忆。

今是10月底尾声一上,小小地总结一下咔嚓,这个月同上博客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源代码:

澳门美高梅手机网站 16

一体化版本代码如下:

澳门美高梅手机网站 17澳门美高梅手机网站 18

/*
 * 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代码全部去除。

通过程是这样的:

澳门美高梅手机网站 19

运行程序,当我们以网页输入正确的用户称之后,效果如下:

澳门美高梅手机网站 20

然后点击“提交”,效果如下:

澳门美高梅手机网站 21

【乱码问题的缓解】

显而易见我们就报到成功了,但是此间出现了乱码。原因是:Tomcat默认编码为: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 %>

运转后,输入对应值:

澳门美高梅手机网站 22

后台输出如下:

澳门美高梅手机网站 23

(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)

澳门美高梅手机网站 24

设以request-receiver.jsp中绝非参加第01、02实行的编码方式(即页面的编码方式),最终显示的页面将会见产出乱码:

澳门美高梅手机网站 25 

 

季、内置对象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)

澳门美高梅手机网站 26

重定向同转化:

重定向的意是说,当页面进行跳转之后,request和response的生命周期已经竣工,完全交由下一个页面去处理了(连url都转移了);而转向的时节,还足以往request其中长携带参数(url不转移)。

 

五、session(会话)

类型:Javax.servlet.http.HttpSession

讲述:表示一个对话,用来保存用户信息,以便跟踪每个用户的状态。(不要用来保存业务数据,request)

概念:是凭在一段时间内客户端和服务器之间的数不胜数的连带的互过程。

作用域:session。

要是是首先不好沾“会话”这个定义,需要重新一下。说白了,客户端与服务器之间可能得不停地进行数据交互(请求与相应),这个进程即足以知晓啊平段子对。Tomcat默认的对话时间呢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:

澳门美高梅手机网站 27

以是和一个会话,所以后台输出的id也是跟一个:

澳门美高梅手机网站 28

现今咱们理解了,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()来获得路径就是一定便利了,避免开错误。程序运行后,效果如下:

澳门美高梅手机网站 29 

 

七、内置对象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页面中失。

程序运行后,效果如下:

澳门美高梅手机网站 30

唯独,实际程序中,一般不这样写,因为事情是摹写在近似里,如果有误,将使任何的艺术来拍卖,那就下再说了~~~

发表评论

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