Jsp教程(简单)

3 篇文章 0 订阅
2 篇文章 0 订阅

首先是jsp的百科JSP(java服务器界面)_百度百科

B/S和C/S区别:

浏览器 | 需要安装客户端

客户端维护 | 客户端需要单独维护升级

与操作系统品台的关系最小化 | 对客户端操作系统有限制

在响应速度和安全性上需要花费更多设计成本 | 能充分发挥客户端处理能力,客户端响应快

B/S的工作原理:

B/S架构采用请求/响应模式进行交互

URL:

uniform Resource Locator统一资源定位符;

Url组成:

​ http://localhost:8080/news/index.html

​ 协议+主机IP地址:端口号+项目资源地址

​ 域名:端口号;

Tomcat服务器:

​ Apache Jakarta的开源项目

​ JSP/Servlet容器 web容器

修改端口号:

打开tomcat的conf文件夹找到sever.xml文件,修改Connector port端口号;

语法:

<%%>小脚本

<%@%>指令

<%!%>声明 也可以用 <jsp:declaration>代码片段</jsp:declaration>代替

<%=%>表达式 等价XML语句:<jsp:expression>代码片段</expression>

<%----%> 注释;

JSP指令:

指令描述
<%@paga …%>定义页面的依赖属性,比如脚本语言,error页面,缓存需求等
<%@ include …%>包含其他文件
<%@ taglib …%>引入标签库的定义,也可以是自定义标签

JSP行为:

语法描述
jsp:include用于在当前页面中包含静态或动态资源
jsp:useBean寻找和初始化一个JavaBean组件
jsp:setProperty设置 JavaBean组件的值
jsp:getProperty将 JavaBean组件的值插入到 output中
jsp:forward从一个JSP文件向另一个文件传递一个包含用户请求的request对象
jsp:plugin用于在生成的HTML页面中包含Applet和JavaBean对象
jsp:element动态创建一个XML元素
jsp:attribute定义动态创建的XML元素的属性
jsp:body定义动态创建的XML元素的主体
jsp:text用于封装模板数据

JSP隐式对象:

对象描述
requestHttpServletRequest类的实例
responseHttpServletResponse类的实例
outPrintWriter类的实例,用于把结果输出至网页上
sessionHttpSession类的实例
applicationServletContext类的实例,与应用上下文有关
configServletConfig类的实例
pageContextPageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
page类似于Java类中的this关键字
ExceptionException类的对象,代表发生错误的JSP页面中对应的异常对象

执行原理:

  1. 用户通过浏览器访问jsp时,tomcat负责把index.jsp转化(翻译)为index_jsp.java
    1. jsp声明–>java成员方法
    2. jsp小脚本–>Java文件中的_jspService()方法中的一段代码
    3. jsp表达式–>java文件中的_jspService()方法中的一段代码, outprint(表达式)
    4. 普通的html–>java文件中的_jspService()方法中的一段代码, outwrite(html代码)
  2. 服务器再把java文件编译成class问价
  3. 服务器执行class文件
    1. 对生成的java类实例化
    2. 调用实例化后对象的_jspService()方法 输出html给浏览器
  4. 浏览器渲染返回后的html数据

注意:当index.jsp未修改时,再次调用,直接取之前编译好的class执行

​ 当index.jsp修改内容后,再次调用,服务器重新进行翻译–编译–执行

关于中文乱码问题:

  1. JSP页面本身的乱码:
    pageEncoding = "UTF-8"
    
  2. 浏览器渲染页面时采用的编码:

    一旦一种编码格式指定,另外一种编码格式不进行指定默认使用指定的编码格式

    contentType = "text/html;charset=UTF-8"
    
  3. 服务器(web容器)保存数据时采用的编码(request)[默认编码为ISO-8859-1 不支持中文]
    get方法
    request.setCharacterEncoding("UTF-8")
    
    post-1方法
    String name = request.getParamter("name")
    name = new String(name.getBytes("ISO-8859-1"),"UTF-8")
    
    post-2方法

    修改tomcat 中 server.xml中connector…最后添加 URIEncodign=“UTF-8”/>

转发和重定向:

  1. 转发
    • 在服务器端发挥作用,将同一个请求在服务器之间进行传递

    • 地址栏不会转向跳转地址

    • request中的参数不会丢失,跳转地址也可以访问到

      request.getRequestDispatcher(“welcome.jsp”).forward(request,response);

  2. 重定向
    • 在客户端重新发送新的请求,跳转页面

    • 地址栏显示跳转地址

    • request参数丢失,跳转地址无法访问

      response.sendRedirect(“welcome.jsp”);

session会话:

会话是个啥?

同一个浏览器在一段时间(从第一个请求到session对象失效)内与web服务器一连串相关的交互过程

过程:

session与窗口的关系:
  1. 访问统一项目,不同浏览器的session对象不同,同一浏览器的不同窗口session对象相同
  2. 通过超链接打开子窗体时,子窗体和父窗体的session相同
常用的方法
方法名称说明
String getId()获取session id
void setMaxInactiveInterval(int interval)设定session的非活动时间
int getMaxInactiveInterval获取session的有效非活动时间,以秒为单位
void setAttribute(String key,Object value)以键值对(key/value)的形式将对象保存到session中
void invalidate()设置session对象失效
Object getAttribute(String key)通过key获取session中保存的对象
void removeAttribute(String key)从session中删除指定的key对应的对象
关于web.xml问题:

项目A-web.xml tomcat-web.xml

tomcat-web.xml + 项目A-web.xml ==>合并—>对项目A有效

  1. 如果有重复的选项,遵守的是项目A的web.xml
  2. tomcat web.xml是全局配置 项目A 的只针对自己
  3. 各项目之间,web.xml互不影响
session对象的失效
  1. 手动失效 --session立即失效

    <%
        session.invalidate();
    %>
    
  2. 超时失效 以秒为单位:

    <%
        session.setMaxInactiveInterval(10);
    %>
    
  3. 在tomcat中或者项目的web.xml中配置–以分钟为单位

    <session-config>
        <session-timeout>1</session-timeout>
    </session-config>
    

include指令

页面A 引入页面B 的代码:

原理:a.jsp + b.jsp ==> c.jsp(未形成文件) —>翻译成c_jsp.java —>编译成.class -->执行

(先合并后执行)

<%@include file="loginControl.jsp"%>`//page page

pageContext的include方法的原理:

b.jsp–>b.java–>编译运行–>结果+a.jsp—>a.java—>c.java(先执行后合并)

<%
    pageContext.include("loginControl.jsp");	//page null
%>

application对象

作用:实现用户之间的数据共享

存储时间:从项目启动到项目关闭

作用域:对应整个项目上下文

常用方法:

方法名说明
String getRealPath获取项目的实际路径
void setAttribute(key,value)以键值对保存对象值
Object getAttribute(key)根据Key获取对象值

四大作用域:

作用域规定的是变量的有效期限和范围

  1. page:pageContext 当前界面有效
  2. request: request,当前请求(转发)经过的界面有效
  3. session: session,当前会话有效(从浏览器打开–>浏览器关闭)
  4. application :application 当前应用有效(从应用打开到应用关闭)

cookie和session对比

sessioncookie
在服务器端保存用户信息在客户端保存用户信息
保存数据是Object保存的数据是String
随着会话的结束而销毁可以长期保存在客户端
可以保存重要信息保存不重要的用户信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

师兄白泽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值