飞行的猪哼哼

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  1. 浏览器(客户端)可以直接访问 WebContent中的文件,但是不能直接访问WEB—INF中的文件。
    原因在于WEB—INF中的权限比较高,只能通过请求转发来访问。
  2. 跳转有两种方式(请求转发和重定向)。请求转发可以访问,重定向不能进行访问。
  3. 统一字符集编码:
    a.编码分类:
    设置jsp文件的编码(jsp文件中的pageEncoding属性): jsp->java
    设置浏览器读取jsp文件的编码(jsp文件中的content属性)
    一般上述设置成一样的(utf-8)。
    文本编码:
    i.将整个eclipse 中的文件统一设置。
    windows---->prerences—>jsp files—>encoding(改成UTF-8)。
    ii.设置某个项目统一编码。
    右击项目—>prerences—>resourse---->Text file encoding (改成UTF-8)。
    iii.设置单独文件的。
    右击文件—>propreties—>resourse—>other—>UTF-8

4 eclipse中的Tomcat和 文件中的Tomcat是独立的:在文件中修改Tomcat的端口号,用eclipse还要使用原来的端口号。
实际上eclipse将Tomcat复制了一份,放在名称为Server中了。
5 如何让eclipse和文件保持一致???
选中下方的Tomcat,双击。在Server Location中选择第二个托管模式。
第一次创建该实例之后,双击Tomcat,选择第二项,如果已经运行了,就不能进行修改了。
6 JSP的页面元素:HTML java代码 注释 指令。
脚本:Sceriptlet
<%
局部变量 java语句
%>

          <%!
             定义方法和全局变量
            %>

          <%=
            相当于等于号
            %>

7 一般而言,修改web.xml 配置文件 java 需要重新启动Tomcat服务器
但是如果修改JSP HTML css js 不需要重新启动Tomcat 服务器。
8 jsp 用out.println()和out.print()效果一样,都会有回车。
要想回车,必须加上+""

9 指令:page指令:
<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1”%>
language :java 固定不变的,jsp页面使用的脚本语言。
import:导入的类。
pageEncoding:jsp文件自身的编码 jsp->java
contentType:l浏览器解析jsp的编码。
10 注释:
HTML注释:
java注释:// /* */
jsp注释:<%-- --%>
注意:HTML注释客户端可以通过浏览器查看源代码,看到。

11 JSP内置对象(自带的,不需要new 也能使用的对象)
9大内置对象:

out:输出对象

pageContext:

request:请求对象,存储“客户端向服务器发送的请求消息”
            :String getParameter(String name):根据key ,返回value
            :  String[] getParameterValues(String name):根据key 返回多个值。
            :void setCharacterEncoding(“编码格式utf-8”):设置请求编码。(Tomcat7以前默认是iso-8859-1 ,tomcat8以及以后默认utf-8)
            :get RequestDispatcher("b.jsp").forward(request response):请求转发。
            :getServerContext():获取该项目的ServerletContext对象。
实例:注册页面
       用register.jsp 注册,用show.jsp 展示。
       https://blog.csdn.net/qq_41341757/article/details/90634929

get与post提交方式:
get提交方式:method=“get”和地址栏 超链接 请求方式 默认都属于get提交方式。
例如:http://localhost:8080/Project/show.jsp?uname=123&upwd=123&uage=12&uhobbies=足球&uhobbies=篮球
post 与get 提交方式的区别?
i.get方式 在地址栏显示请求信息(但是地址栏能够容纳的信息量有限 4~5KB 如果请求数据量是大文件,会报错),post不会。
ii.文件上传必须用post。

response:
提供的方法:
void addCookie(Cookie cookie):服务器向客户端增加cookie对象。
void sendRedirect(String location ) throws IOException :页面跳转的另一种方式,重定向。
void setContextType(String type) :设置服务端响应编码(设置服务端的content属性) 
实例登录功能:

https://blog.csdn.net/qq_41341757/article/details/90639114
请求转发与重定向的区别:
请求转发 重定向
地址栏是否改变 不变 改变
请求时的数据 保留 不保留

转发与重定向的实例:

转发:
张三(客户端) —> {窗口A(服务器)—>窗口B}
重定向:
张三(客户端)----->窗口A—>去找B---->回到客户端------>窗口B

session:
           
              Cookie(客户端,不是内置对象):Cookie是由服务端产生的,发送给客户端保存。
               本质:本地缓存:客户端(hello.mp4)---->服务端(hello.mp4):客户端向服务器发送请求访问服务器上的hello.mp4,
                         客户端先找到hello.mp4,将它封装到Cookie 中,发送给客户端。
                作用:提高访问服务器的效率,但是安全性较差。
                原因:如果账户密码存放在客户端,容易被盗取。
               Cookie: key=value
               javax.servlet.http.Cookie
               public Cookie (String name,String value)
               String getName();
               String getValue();
               void setMaxAge(int expiry);最大有效期(s)
              
               服务器准备给客户端:
               response.addCookie(Cookie cookie)
               页面跳转(转发 重定向)
               客户端获取Cookie:
               request.getCookies();(必须获取全部的Cookie,然后再去遍历)。
               通过F12可以发现除了自己设置的Cookie对象外,还有一个name为JSESSIONID的cookie对象。
               https://blog.csdn.net/qq_41341757/article/details/90640302
              
              Cookie 的经典案例:使用Cookie记住用户名  的功能。
               :建议Cookie只保存英文和数字,否则需要编码和解码操作。
               :https://blog.csdn.net/qq_41341757/article/details/90645751


            session:会话
             浏览网站:开始浏览网站到关闭网站就是一次会话。
             sessionID与JSESSIONID????
             解释:客户端第一次访问服务器时,服务器的会创建一个session,session中自带一个sessionID
                       当服务器响应客户端的时候会创建一个JSESSIONID,并且将sessionID的值放在Cookie中,传递给客户端。
                       客户端中的JSESSIONID与服务器上的SESSIONID一一对应。
                       客户端第2/n次请求服务端的时候:服务器会先用客户端cookie中的JSESSIONID 去匹配服务器端的SESSIONID
                       如果匹配成功,说明此用户不是第一次访问,无需登录。session一般在用户登录的时候创建。
               
             session的方法:
             String getID():获取sessionID
             boolean isNew():判断是否是新用户(第一次访问)
             void invalidate():使session失效。
             void setAttribute()
             Object getAttribute()
             void setMaxInactiveInterval(秒):设置最大有效,非活动时间。
              int  getMaxInactiveInterval():获取最大有效,非活动时间。

            Session项目练习:如果登录不成功,返回login.jsp  ,如果成功登录用Session记录用户的信息,
                                        并且用welcome.jsp显示session中的用户信息。
                                        https://blog.csdn.net/qq_41341757/article/details/90646584
            cookie 与session的区别:
                           session                cookie

保存的位置: 服务端 客户端
安全性 安全 不安全
保存的内容 Object String

config:配置对象
page:当前JSP页面对象(相当于java中的this)。
excepyion: 异常对象 
application:   全局对象:
               方法:String getContextPath()  :获取虚拟路径
                         String getRealpath(“虚拟路径地址”):获取虚拟路径对应的绝对路径。

统一请求的编码:
get 如果出现乱码,解决:
1 . 统一每一个变量的编码:
name=new String (name.getBytes(“iso-8859-1”),“utf-8”);
2 . 修改server.xml文件,一次性的修改Tomcat get提交方式。
在server中找到端口号的地方:

加上URIEncoding="UTF-8"这句话。之后所有的get请求都是utf-8啦。

post方式??
在body开始加上:request.setCharacterEncoding(“utf-8”);这句话。
request 请求对象 同一次请求有效
session 会话对象 同一次会话有效
appliance 全局变量 全局有效(整个项目有效)

以上4个对象共有的方法:
Object getAttribute(String name) :根据属性名,或者属性值。
Void setAttribute(String name,Objext obj):设置属性值(新增 ,修改)。
setAttribute(“a”“b”);//如果a对象之前不存在,则新建一个a对象,如果已经存在,将a的值改成b
void removeAttribute(String name):根据属性名,删除对象 。

a.
pageContext :页面当前有效(页面跳转后无效)

b.
request 同一次请求有效,其他请求无效(请求转发后有效,重定向后无效)。

c.
session 同一次会话有效(无论怎么跳转,都有效,关闭或者切换浏览器后无效)

d:
application 全局变量,整个项目运行期间都有效。

posted on 2019-05-29 20:31  飞行的猪哼哼  阅读(25)  评论(0)    收藏  举报