jsp隐式对象

一、常见的Web应用服务器

1.JavaEE应用服务器(提供多种容器:Web容器,EJB容器,JMS,JTA等)
在这里插入图片描述
2.javase:可以开发服务器动态网页:jsp/servlet服务器端小应用程序,小服务程序。
(a)EJB:企业级javaBean,需要EJB容器
(b)javaBean:客户端技术,一个员工类属于一个JavaBean,不需要一个特殊环境只要一个jre:java Runtime environment
©JavaEE应用服务器(提供多种容器:Web容器,EJB容器,JMS,JTA等)
企业常用的:Apache tomcat (JSP/Servlet容器), JBoss,Oracle Glassfish, Oracle Weblogic收费,IBM WebSphere收费
(d)企业级应用服务器内都要提供两个基本的容器:web container(jsp/servlet容器),EJB Container(EJB提供运行环境):Enterprice JavaBean,JMS等。
JavaEE 5,6, 7,8
(e)DataSource数据连接池:Tomcat启动时创建20个连接放入连接池ConnectionPool,当请求来时,不用再一个个创建连接,因为会花费50ms。
比如Connection 对象重用,一个连接用完后不会断开,用完会归还连接池以备其他可用。

二、什么是JSP隐式对象

a)由Web容器、Servlet容器(Tomcat服务器)创建的服务器端的对象。在JSP中无需用户创建便可以直接使用这些对象。隐式对象的名称是JSP的保留字,意味着用户不能再定义名字相同的变量。

三、隐式对象有以下9个

在这里插入图片描述
注:request也属于作用域对象。
掌握和应用:request, response, out, session, application, pageContext
了解:page, config, exception

(四)JSP隐式对象

在这里插入图片描述
在这里插入图片描述
注:request, response, session, application, pageContext, out几个隐式对象比较重要。其常用 API 必须掌握。

(五)HTTP请求头信息

在这里插入图片描述

(六)request隐式对象

a)包含了用户的所有请求数据,例如:表单提交,超链接传参
<a href=”a.jsp?name=v1&name2=v2”>。以及请求的头部信息。
b)类型:是javax.servlet.http.HttpServletRequest的一个实例。
c)常用方法:
1)String getHeader(String name):得到HTTP请求头的标识信息,是一个字符串。
2)Enumeration getHeaderNames():得到HTTP请求头中所有的标识名称。
3)String getQueryString():得到客户端请求的查询字符串(请求参数)。请求参是以名/值对向服务器发送数据的。
1.如”?”号后面的username和password两个参数:
<a href=http://localhost:8080/login.jsp?username=james&password=123456>登录
4)String getContextPath(): 得到应用程序的上下文路径。
5)String getRequestURI():得到请求的URI。
6)StringBuffer getRequestURL():得到请求的URL。
7)String getServletPath():得到Servlet的URI。
8)HttpSession getSession():得到HttpSession(会话对象)。HttpSession表示的是客户端(IE浏览器)与tomcat服务器建立的一个会话。
9)HttpSession getSession(Boolean create):getSession(true)与getSession()效果一样。指定true时如果Session已存则返回存在的Session,当Session不存在时服务器会创建一个Session。指定false时如果Session已存则返回存在的Session,当Session不存在将不会创建。
10)void setAttribute(String name, Object object):使用给定的名字将数据保存到request中。
HTTP:
11)Object getAttribute(String name):通过指定名称得到保存在request中的数据。
12)void removeAttribute(String name):删除一个保存在请求中的对象。
13)Enumeration getAttributeNames():得到所有保存在request中对象的名称。
14)String getContentType():得到请求内容的类型。
15)ServletInputStream getInputStream():得到一个字节输入流。
16)Locale getLocale():得到用户的java.util.Locale.
17)String getParameter(String name):通过请求参数名得到请求参数值。
<a href=”xxx.jsp?p1=v1&p2=v2&p3=v3……”>超链接带请求参数
如是表单提交,参数名则为输入框的名字。
18)Map getParameterMap():以一个java.util.Map的形式得到所有请求参数。请求参数名做为Map的key,请求参数的值作为Map的value;
19)Enumeration getParameterNames(): 得到所有的参数名的枚举。
20)String[] getParameterValues(String name):获得同名请求参数的多个值,如多选框、多选下拉列表的值。
21)RequestDispatcher request.getRequestDispatcher(“URI”):获得请求分发对象,通RequestDispatcher.forwar(request, response)的方法将请求转发到URI指定的JSP/Servlet去处理。
22)setCharacterEncoding(“charset”): 设置请求的字符编码,用来解决请求参数的中文乱码问题。
23)中文参数乱码问题:
1.Get请求方式中文参数乱码问题:
更多详细请参考《中文乱码总结.doc》
a)JSP/Servlet:
1) 将接收的内容(参数)进行编码
request.setCharacterEncodeing(String charset);

  1. 将要输出的转发的内容进行编码
    response.setContextType(“text/html;charset=utf-8”);

  2. URL传中文参数:

<a href=http://localhost:8080/demo/xx?name=中文参数>xxx

String name = request.getParameter(“name”); //这里得到是乱码
String s = null;
if (name != null){
s = new String(name.getBytes(“iso-8859-1”),“utf-8”);
}
最好实践就是把所有对符串的操作写到一个工具类中:StringUtils

  1. Post请求方式的中文处理:….
    处理页面在request.getParameter(“”); 前可通过设置request对象的字符集编码,如:
    //1.选设置请求字符编码
    request.setCharacterEncoding(“utf-8”);
    //2.再取数据
    String x = request.getParameter(“xxx”);

a)MVC(Model/View/Controller模式)三层结构,各施其职:
MVC: Model(实体类、DAO类、Service业务类)-View(JSP)-Controller(Servlet)
request-api:
String[] hobbies=request.getParamter("")
URI:应用开始算起的路径
URL:浏览器全部路径
servletPath:不包括应用程序上次文,从根开始
forward.jsp==>target1.jsp==>target2.jsp显示
两次转发后结果不变,数据仍然存在。

javax.servlet.jsp.JspWriter
out.write()
PrintWriter writer = response.getWriter()
看类类型层次结构:按type hiredate

重定向:

创建一个会话:把sessionID,响应时tomcat会把sessionID传回去给客户端,
session通过cookie携带过来的
cookie:跟踪用户行为的一些技术手段
将cookie的seeionID转成某种码加入到地址栏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值