jsp学习总结(详解版)

1 篇文章 0 订阅

动态,静态网页

1.不能和是否有"动态"混为一谈
2.是否随着时间,地点,用户操作的改变而改变是主要区别。

动态网页需要使用到服务端脚本语言(JSP)

构架(分为两种(cs和bs))

cs:client server(QQ ,微信)

cs不足:

  1. 如果软件升级,那么全部软件都要升级
  2. 维护麻烦:需要维护每一台 客户端软件
  3. 每一台客户端 都需要安装客户端软件
BS :Broswer Server(网页版:京东)

客户端可以通过浏览器 直接访问服务器

tomcat解压后目录:

  1. bin:可执行文件(startup.bat shutdown.bat)
  2. conf:配置文件(server.xml)
  3. lib:tomcat依赖的jar文件
  4. log:日志文件(记录出错等信息)
  5. temp:临时文件
  6. webapps: 可执行的项目(将我们开发的项目 放入到该目录)
  7. work: 存放有jsp编译的java,以及编译的class文件
访问后常见状态

200:一切正常
404:资源不存在
403:权限不足(如果访问a目录,但a目录设置看不见)
300/301页面重定向
500: 服务器内部有问题

现在对jsp有一个宏观的了解:

jsp就是在html中嵌套的java代码

在项目/web-inf/web.xml中设置的初始页面

<welcome-file-list>
  <wlecome-file>index.jsp</welcome-file>
  </welcome-file-list>

虚拟路径

它的用处:是把web项目配置到webapps以外的目录。

虚拟路径的配置地点

方式一:

conf下的server.xml包里有一个

<Host name="localhost"  appBase="webapps"
          unpackWARs="true" autoDeploy="true">

      <!-- SingleSignOn valve, share authentication between web applications
           Documentation at: /docs/config/valve.html -->
      <!--
      <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
      -->

      <!-- Access log processes all example.
           Documentation at: /docs/config/valve.html
           Note: The pattern used is equivalent to using pattern="common" -->
      <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
             prefix="localhost_access_log" suffix=".txt"
             pattern="%h %l %u %t &quot;%r&quot; %s %b" />
   
    </Host>

如果想要在外部配置需要在上面这个代码里面加一个

docBase:实际路径

path:虚拟路径(绝对路径,相对路径)

方式二:

在conf/catlina/localhost里面新建一个:项目名.xml文件

这种方法的好处: 不用再重新启动tomcat了,非常的方便,非常的好用!

(如果改成root.xml就不用些路经了)

虚拟主机

具体步骤如下:
  1. 在conf/server.xml文件里找
 // 先找下面这个东西
  <Engine name = "Catalina" defaultHost="这里面改成你要配的地址">
 //在找<host>,在host标签上面加个这玩意。
 <Host appBase = "实际路径" name = "上面你改的玩意" >
            <Context docBase = "实际路径" path="虚拟路径">
        //虚拟路径最好写成"/",
  1. 将本机的host文件修改

C:\windows\System32\drivers\etc\host

增加映射:

例如:127.0.0.1 www.test.com

对于无法向hosts文件写ip的问题:
  • 首先按下windows+x键,在电脑桌面右下角弹出来的菜单里选择Windows Powershell(管理员)
  • 在打开的powershell 界面输入notepad,按回车,就会出现记事本的界面。
  • 在记事本界面点击文件,然后点新建,在弹出来的窗口里找到路径c:\windows\system32\drivers\etc\,找到后可以看到目录里面是空白。点击右下角的选择文件,点击所有文件。
  • 此时hosts文件就会出现在你眼前,点击hosts文件,然后点右下角的打开。就会弹出hosts文件的编辑页面,可以在里面添加你需要的IP地址和主机名了。
  • 添加完毕以后,可以直接按ctrl+s保存,也可以直接点击记事本左上角的文件,然后点保存。Hosts文件就修改成功了。
解决startup闪退问题

闪退的两种问题

jsp的执行流程

在这里插入图片描述

第一次访问:服务端将jsp翻译成java,在将java编译成class文件

第二次访问:直接访问class文件

jsp执行流程

jsp -java(servlet文件) -class

jsp和servlet可以相互转换

因为第一次请求服务器 会有翻译 和编译过程,因此比较慢;后续访问,可以直接访问,若服务端修改了代码,会重新编译。

Eclipise环境下配置tomcat

Eclipse环境下如何配置Tomcat,并且把项目部署到Tomcat服务器上

如果eclipse版本过低没有想要的tomcat版本解决方法

Eclipse配置Tomcat8.5(显示Servers设置)

在eclipse中创建项目:

浏览器可以直接访问WebContent中的文件,如:http://localhost:8848/myProject/index1.jsp

但是web-inf中的文件,无法直接访问,只能通过请求转发来访问

注意:并不是任何的内部跳转都能访问 ,原因是跳转有两种方式:请求转发,重定向

配置tomcat运行时的环境

  • 将tomacat/lib中的servlet-api.jar加入项目的构建路径中
  • 右键项目->Build path ->Add library ->Server Runtime

统一字符集编码

  • 设置jsp文件的编码(jsp文件中pageEncoding属性)
  • 设置浏览器读取jsp文件的编码(jsp文件中content属性)
  • 一般将上述设置改成一致的编码,推荐使用UTF-8

文件编码:

  1. 将整个eclipse中的文件统一设置
  2. 设置某一项目
  3. 设置单独文件

jsp页面元素:
a.脚本Scriptlet(java代码)
有三个方式:

  1. 方式一:
    <%
    局部变量,java语句
    %>
  2. <%!
    全局变量,定义方法
    %>
  3. <%=
    输出表达式
    %>

注意:一般而言,修改web.xml,配置文件,java需要重启tomcat服务,但是如果是修改jsp/html/css/js,则不需要重启

b.指令

如page指令:
<%@ page …%>

page指定的属性;
language:jsp页面使用的脚本语言

import:导入类

pageEncoding:jsp文件自身编码

contentType:浏览器解析jsp的编码

c.注释:
html

java//
jsp <%–jsp注释–%>

JSP内部对象

(自带的,不new也能使用)
jsp九大内置对象:

名称
pageContextjsp页面容器
request请求对象
response响应对象
session会话对象
appliation全局对象
config配置对象
out输出对象
page当前jsp页面对象
exception异常对象

request:请求对象:存储“客户端向服务端发送请求信息”

常见方法:
String getParameter (String name):根据请求字段名KEy,返回字段值value
get提交方式:method= “get”和地址栏,超链接()请求方式默认都属于get提交方式

get与post请求方式的区别:

a.get()方式在地址栏显示信息(如果请求数据存在大文件,会存在容纳不下而出错);post不会

b.文件上传,必须用post

推荐方式 post
,response

统一请求的编码request

get方式请求,如果出现乱码,解决:
a.统一每一个变量的编码(不推荐)
new String(旧编码,新编码);
name = new String(name.getBytes(“iso-8859-1”),“utf-8”)
b.修改server.xml,一次性更改tomcat默认get提交方式的编码(utf-8) (在写的端口后面加上URIENcoding = “UTF-8”)

请求转发和重定向转发的区别
选项请求转发重定向转发
地址栏是否改变不变改变
是否保留第一次请求数据保留不保留
请求次数12
跳转的位置服务端客户端发生两次跳转

在这里插入图片描述

举例了解:
请求转发: 张三(客户端) -》【服务窗口A(服务端)-》服务端b】
重定向: 张三(客户端)-=》 服务端窗口A(服务端)——》去找b
张三(客户端)==》服务端窗口B(服务端)–结束

session
cookie(客户端,不是内置对象)

COOkie是由服务端产生,在发送给客户端保存,相当于本地缓存

作用:提高访问服务端效率,但是安全性较差
cookie:是在javax.servlet.http.Cookie所在的包里

response:相应对象
提供的方法:
void addCookie(Cookie cookie);服务端向用户端增加cookie对象
void sendRedirect(Stirng location):页面跳跳转的方式(重定向)
void setContetType(String type)设置服务端响应编码(设置响应端contentType属性)

Public Cookie(String name,String value)
常用方法:
String getName():获取name值
String getValue():获取vlaue
void setMaxAge(int expiry);最大有效期(秒)
服务端准备Cookie:
response.addCookie(Cookie cookie)
页面跳转(转发,重定向 )
客户端获取cookie:
request.getCookies();

{

客户端增加cookie:response对象;客户端获取对象:request对象

不能直接获取某个单独对象,只能一次性将全部cookie拿到

除了自己设置的Cookie对象外,还由一个name为JSESSIONID的cookie

}

(客户端向服务端发出个请求,然后服务端把请求内容放在cookie里面返回给客户端)
在这里插入图片描述

  //服务端产生一个cookie发送给客户端代码
  Cookie cookie = new Cookie("uname",name);
  response.addCookie(cookie);
  response.sendRedirect("A.jsp");
  
  
  //客户端响应
  
  Cookie[] cookies = request.getCookies();
  for(COokie cookie: cookies){
      if(cookie.getName.equals("uname")){
          uname = cookie.getValue()
      }
  }
session:会话

会话的概念(

  1. 浏览网页:开始-关闭
  2. 购物:浏览到支付到退出
  3. 电子邮件:浏览,写邮件,退出

)这些事件的整个过程就是session

session机制

客户端第一次请求

客户端时,服务端会产生一个session对象(用于保存该客户信息);
并且每个session对象都有一个唯一的sessionId(用于区别其他session);
服务端会产生一个cookiea,并且该cookie的名字=JSESSIONID,value= 服务端sessionid的值;
然后 服务端会在响应客户端的同时 将该cookie发送给客户端,至此 客户端就有了一个cookie(JSESSIONID),因此客户端的cookie就可以和服务端session一一对应了

第n次请求
服务端会先根据客户端cookie中的JESSIONID去服务端session中匹配,如果匹配成功,说明此用户已不是第一次访问,无需登录;

cookie和session的区别
菜单sessioncookie
保存的位置服务端客户端
安全性较安全较不安全
保存的内容objectString
四种范围对象

(四种范围对象(小-大)(page对象)

pageContext jsp页面容器 (当前页面有效)

request 请求对象 (同一次请求有效)

session 会话对象 (同一次会话有效)

appliation全局对象 (全局有效(整个项目))


四个对象共有都的方法:

方法名属性
Object getAttribute(String name)根据属性名,或者属性值
void setAttribute(String name,Object obj)设置属性值(新增,修改)
setAttribute(“a”,“b”)如果a对象之前不存在,则新建一个a对象;如果a之前已经存在,则将a的值改为b
void removeAttribute(String name);根据属性名,删除对象
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值