zoukankan      html  css  js  c++  java
  • Java Web系列之使用Eclipse开发web项目(jsp项目)

    基本概念

    • 在eclipse中创建的web项目:
    1. 浏览器可以直接访问WebContent中的文件
    2. 但是WEB-INF中的文件无法通过客户端(浏览器)直接访问,只能通过请求转发来访问

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

    • 配置Tomcat运行时环境

    jsp<->servlet

    1. 将Tomcat/lib中的servlet-api.jar加入项目的构建路径
    2. 右键项目->build path ->add library ->server runtime
    • 部署Tomcat
    • 在servers面板,新建一个Tomcat实例,再在该实例中部署
    • 注意:一般建议将eclipse中的tomcat与本地Tomcat中的信息保持一致;第一次创建完设置托管模式;否则以后就变灰了,不能改
    • 统一字符集编码

    设置jsp文件的编码(jsp中的pageEncoding属性):jsp->java
    设置浏览器读取jsp文件的编码(jsp文件中content属性)
    一般讲上述设置成统一码,推荐使用国际码utf-8

    文本编码:

    1. 将整个eclipse中的以后文件统一设置
    2. 设置一个项目
    3. 设置单独文件
    • jsp的页面元素:HTML,Java代码(脚本scriptlet),指令
    1. 脚本scriptlet
    //1
    <%
    	局部变量、Java语句
    %>
    //2
    <%!
    	全局变量、定义方法
    %>
    //3
    <%= 输出表达式    %>
    

    一般而言,修改web.xml需要重启tomcat,修改jsp不需要

    注意:out.println()不会回车,需要添加HTML的换行符,out.println()中可以识别html代码

    1. 指令
    • page指令
    <%@page .....%>
    
    • page指令的属性:
    1. language:jsp页面使用的脚本语言
    2. import:导入类
    3. pageEncoding:jsp文件自身编码 jsp->java
    4. contentType:浏览器解析jsp的编码
    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    
    1. 注释
    1. html注释 网页源代码里边可以显示
    2. java注释// /.../
    3. jsp注释<%-- jsp注释 --%>

    JSP九大内置对象(重点)

    • jsp九大内置对象(重点)(自带的,不需要new也能使用的对象)
    1. out:输出对象,向客户端输出内容
    2. request:(封装请求信息)请求对象;存储"客户端向服务端发送的请求信息"(数据只在同一次请求有效)
    • 常见方法:
    • String getParameter(String name):根据请求的字段名key,返回字段值value;
    • String[] getParameterValues(String name):根据请求的字段名key,返回多个字段值value(checkbox);
    • void setCharacterEncoding("编码格式utf-8"):具体设置post请求编码(tomcat默认编码iso-8859-1);
    • getRequestDispatcher("b.jsp").forward(request,response): 请求转发的方式跳转页面 A->B
    • ServletContext getServerContext():获取项目的ServletContext对象
    • 示例:
    • 注册
    • 注册页register.jsp 展示页show.jsp
    • 访问url含义
    • localhost:8080/MyJspProject/show.jsp?uname=aa&upwd=wer&uage=12
    • 连接/文件?参数名1=参数值1&参数名2=参数值2&参数名3=参数值3
    • 统一请求的编码request
    1. get方式 如果出现乱码解决方式:
    • 统一每一个变量的编码(不推荐)
    • 变量名=new String(变量名.getBytes("iso-8859-1"),"utf-8");
    • 每个变量改一次
    • 修改server.xml一劳永逸
    • 建议使用Tomcat时,首先在server.xml中统一编码方式 URIEncoding="UTF-8"
    1. post方式
    • request.setCharacterEncoding("utf-8");
    • get提交方式:method="get"和地址栏、超链接请求方式默认都属于get提交方式
    • get与post请求方式的区别:
    1. get方式在地址栏显示请求信息(但是地址栏容纳信息有限,4-5kb,如果请求数据存在大文件,图片,存储不下会报错),post不会显示
    2. 文件上传操作,必须是post
    3. 推荐使用:post
    1. response:(响应信息)响应对象
    • 提供的方法:
    1. void addCookie(Cookie cookie):服务端向客户端增加cookie对象
    2. void sendRedirect(String location)throws IOException:页面跳转的一种方式
    3. void setContentType(String type):设置服务端响应的编码(设置服务端的contentType类型)
    • 示例:登录
    • login.jsp登录->check.jsp判断->success.jsp
    • 请求转发和重定向的区别:
    1. 地址栏改变:不变,变
    2. 是否保留第一次请求时的数据:保留,不保留(跳到success.jsp拿不到数据) --4种范围对象
    3. 请求的次数:1次(请求转发的跳转是在服务器内部跳转),2次
    4. 跳转发生的位置:服务器端,客户端
    5. 转发、重定向:
    • 转发: 张三(客户端)->【服务窗口A->服务窗口B】
    • 重定向: 张三(客户端)->【服务窗口A】->张三(客户端)->【服务窗口B】
    1. session(存在于服务端)
    • Cookie
    • Cookie(存在于客户端,不是内置对象,得new):
    • Cookie是有服务端生成的,再发送给客户端保存;
    • Cookie相当于本地缓存的作用:客户端->服务端
    • 作用:提高访问服务端的效率,但是安全性较差
    • Cookie:name-value
    1. javax.servlet.http.Cookie类产生的 public Cookie(String name,String value)
    2. String getName():获取name
    3. String getValue():获取value
    4. void setMaxAge(int expiry):设置最大有效期(秒)
    1. 服务端准备Cookie:
    • response.addCookie(Cookie cookie)
    • 页面跳转(转发,重定向)
    1. 客户端获取Cookie:
    • request.getCookies(); //获取Cookie必须每次都是获取全部
    • 注意:
    1. 服务端增加cookie:response对象
      客户端获取对象:request对象
    2. 不能直接获取单独对象,只能一次性将全部cookie得到
      除了自己设置的Cookie对象外,还有一个name叫JSESSIONIDDE的cookie
    3. 使用Cookie实现自动记住用户名 //建议cookie只保存英文数字,否则要编解码
    • session:会话
    1. 浏览网站:开始-关闭
    2. 购物:浏览-付款-退出
    3. 电子邮件:浏览-写邮件-退出 一次开始到关闭
    • session机制
    • 客户端第一次请求服务端
    1. 客户端第一次请求服务端时,(jsessionid-sessionid)服务端会产生一个session对象(用于保存该客户的信息),并且每个session对象都会有唯一的sessionId(用于区分其他session);
    2. 服务端会产生一个cookie,并且该cookie的name=JSESSIONID,value=服务端sessionId的值;
    3. 然后,服务端会在响应客户端的同时,将该cookie发送给客户端,至此 客户端就有一个cookie(JSESSIONID)
    4. 因此,客户端的cookie就可以和服务端的session一一对应(JSESSIONID-SESSIONID)
    • 客户端第二次/n次访问服务端
    1. 客户端第二次/n次访问服务端时:服务端会先用客户端cooki中的JSESSIONID去服务端session中匹配sessionId,若匹配到,则说明不是第一次访问
    • 例子:
    • 客户端:顾客
    • 服务端:存包处

    顾客第一次存包:商场判断此人是不是之前已经存过包(是否有钥匙),如果新顾客(没钥匙),分配一个钥匙;

    第二次/n次,如果手里有钥匙,直接一一对应,不分配

    • session:
    1. session存储在服务端
    2. session是在同一个用户请求时共享
    3. session实现机制:第一次客户请求时产生一个sessionid并复制给jsessionid然后发给客户端.最终实现sessionid与jsessionid一一对应
    • session方法
    1. String getId():获取sessionId
    2. boolean isNew():判断是否是新用户(第一次访问)
    3. void invalidate():使session失效(退出登录、注销)
    4. void setAttribute():
    5. Object getAttribute():
    6. void setMaxInactiveInterval(秒):设置最大有效非活动时间
    7. int getMaxInactiveInterval(秒):获取最大有效非活动时间
    • 示例:
    • 登录
    • JSESSIONID5B3D4AA49AB91B1311F514BCF727DD29
    • sessionId5B3D4AA49AB91B1311F514BCF727DD29
    • 客户端在第一次请求服务端时,如果服务端发现此请求没有JSESSIONID,则会创建一个name=JSESSIONID的cookie并返回给客户端
    • Cookie
    1. 不是内置对象,要使用必须new
    2. 但是,服务端会自动new一个Jsessionid的cookie
    • cookie和session的区别:
    1. 位置分为:客户端和服务端
    2. 安全为:不安全和较安全
    3. 保存的内容:Object和字符串String
    1. application:全局对象
    1. String getContextPath():虚拟路径
    2. String getRealPath(String name):绝对路径(虚拟路径,相对的的绝对路径)
    1. pageContext:JSP页面容器
    2. config:配置对象
    3. page:当前JSP页面对象(相当于JAVA中的this)
    4. exception:异常对象

    九大内置对象中四种范围对象(小到大)

    1. pageContext(也可称为page对象):当前页面有效,页面跳转后无效
    2. request:同一次请求有效,其他请求无效(请求转发后有效,重定向后无效)
    3. session:同一次会话有效(无论怎么跳转都有效,只要不关/切换浏览器)
    4. application:全局有效(整个项目有效):整个项目运行期间都有效,切换浏览器也有效,关闭服务或者切换项目无效
    • 以上四种对象的共有的方法:
    1. Object getAttribute(String name):根据属性名,获取属性值
    2. void setAttribute(String name,Object obj):设置属性值(新增,修改)
    3. setAttribute("a","b");//如果a对象之前不存在,则新建一个a对象; 如果a之前已经存在,则将a的值改为b
    4. void removeAttribute(String name):根据属性名,删除对象 //set赋值,get取值,尽量使用小范围,性能损耗小
  • 相关阅读:
    HDU2059(龟兔赛跑)
    pat 1012 The Best Rank
    pat 1010 Radix
    pat 1007 Maximum Subsequence Sum
    pat 1005 Sign In and Sign Out
    pat 1005 Spell It Right
    pat 1004 Counting Leaves
    1003 Emergency
    第7章 输入/输出系统
    第六章 总线
  • 原文地址:https://www.cnblogs.com/wanggang9968/p/12915911.html
Copyright © 2011-2022 走看看