A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2018-2-8 14:49 编辑

笔记节选

浏览器向服务器携带中文?
        get方式
                get的参数都藏在请求行中,请求行中编码是固定ISO8859-1
                解决方案: 通过String的构造方式来解决  例如:  文件名是filename--->  new String(filename.getByte("ISO8859-1"),"UTF-8");
        post方式
                post的方式参数藏在请求体中,将请求体中的编码改成UTF-8就行了
                request.setCharacherEnconding("UTF-8");
               
服务器向浏览器输出中文的时候乱码解决???
        设置响应头
                响应头的编码是固定的ISO-8859-1,所有我们需要给浏览器能看懂的东西
                if(header.contains("Firefox")){
                        filename = base64EncodeFileName(filename);
                }else{
                        filename = URLEncoder.encode(filename, "UTF-8");
                }
                public static String base64EncodeFileName(String fileName) {
                        BASE64Encoder base64Encoder = new BASE64Encoder();
                        try {
                                return "=?UTF-8?B?"
                                                + new String(base64Encoder.encode(fileName
                                                                .getBytes("UTF-8"))) + "?=";
                        } catch (UnsupportedEncodingException e) {
                                e.printStackTrace();
                                throw new RuntimeException(e);
                        }
                }
        设置响应体
                getOutputStream
                getWriter
                setContextType("text/html;charset=UTF-8")---> setHeader("Context-Type","text/html;charset=UTF-8 ")  setCharaterEnconding("UTF-8");
————————————————————————————————
路径问题
1.浏览器端如果想直接访问Servlet的话
        路径的编写:使用:  /工程名/servlet的虚拟路径
2.浏览器如果想要直接访问.html.jsp或者其他静态资源
        路径的编写:使用: /工程名/资源所在的路径
3.servlet A想要跳转其他servlet B
        1.重定向
                路径的编写:使用: /工程名/B对应的虚拟路径
        2.请求转发
                路径的编写:使用: /B对应的虚拟路径
4.servlet A想要跳转到 .html或者.jsp
        1.重定向
                路径的编写:使用: /工程名/.jsp或者.html所在的子路径
        2.请求转发
                路径的编写:使用: /.jsp或者.html所在的子路径
5.servlet想要读取项目下文件
        1.需要用ServletContext的对象来读取
                1.ServletContext.getResouceAsStream("资源路径(不用再加工程名)")
                2.ServletContext.getRealPath("资源路径(不用再加工程名)")

EL表达式:
概述:表达式语言,为了使JSP写起来更加简单
为什么学习EL:
简化JSP代码,减少<%%>
使用EL表达式:
语法:${EL表达式}
EL功能
获取数据:(JSP的四个域)
执行运算:
操作WEB开发的常用的对象:
调用Java中方法:--很少用
获取数据:
${域名.值名}如果没找到返回“ 空”,不会返回null。
类似findAttribute("name") 先从page域中查找,没找到去request域中查询,没有找到去session域中找,没有找到就去application域中找
获取数组数据:${arr[索引值]}
获取List集合的数据:${listzh[索引值]}
获取Map集合的数据:${map.key值}可以获取集合的value的值
点.和[]的区别:
[]用于有下标的数据(数组,list集合) .用于有属性的数据(map,对象)
如果属性名中包含有特殊的字符.必须使用[];且[] 中的值必须用" 引号"括起来
获取对象的数据:$[对象名.属性]可以拿到属性值
获取对象集合的数据:${userList[0].id-userList[0].name}
file:///C:/Users/%E9%99%88%E6%B4%8B/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif
JSTL常用标签的用法--forEach
<c:forEach>标签有两种语法格式:
语法1,在集合对象中迭代:

<c:forEach[var="varName"]

           items="collection"

           [varStatus="varStatusName"]

           [begin="begin"] [end="end"][step="step"]>

    body content
</c:forEach>
语法2,迭代固定的次数:

<c:forEach[var="varName"]

          [varStatus="varStatusName"]

          begin="begin" end="end" [step="step"]>

    body content
</c:forEach>
<c:forEach>标签的属性说明如表8.6所示。
表8.6  <c:forEach>标签的属性
  属性名
  
  是否支持EL
  
  属性类型
  
  属 性 描 述
  
  var
  
  false
  
  String
  
  指定将当前迭代到的元素保存到page这个Web域中的属性名称
  
  items
  
  true
  
  任何支持的类型
  
  将要迭代的集合对象
  
  varStatus
  
  false
  
  String
  
  指定将代表当前迭代状态信息的对象保存到page这个Web域中的属性名称
  
  begin
  
  true
  
  int
  
  如果指定items属性,就从集合中的第begin个元素开始进行迭代,begin的索引值从0开始编号;如果没有指定items属性,就从begin指定的值开始迭代,直到end值时结束迭代
  
  end
  
  true
  
  int
  
  参看begin属性的描述
  
  step
  
  true
  
  int
  
  指定迭代的步长,即迭代因子的迭代增量
  
在使用<c:forEach>标签时,需要注意如下几点说明:
l如果指定begin属性,其值必须大于或等于零;
l如果指定步长(step属性),其值必须大于或等于1;
l如果items属性的值为null,则要处理的集合对象为空,这时不执行迭代操作;
l如果指定的begin属性的值大于或等于集合对象的长度,不执行迭代操作;
l如果指定的end属性的值小begin属性的值,不执行迭代操作;
JSTL提供的EL函数库
${fn:函数名()}
<h1>JSTL提供的EL的函数库</h1>
${fn:contains("Hello World","Hello") }
${fn:length("HelloWorld") }
${ fn:toLowerCase("ABCDE")}
<c:forEachvar="i" items='${ fn:split("a-b-c-d","-") }'>
    ${ i }
</c:forEach>
MVC设置模式
JSP的开发模式一:
JSP+JavaBean的模式,JSP显示数据,使用JavaBean封装和处理数据

JSP的开发模式二:
优点:JSP用于显示数据,使用JavaBean封装和处理数据,Servlet控制
也被称为MVC的设计模式
MVC:M:Model:模型层。V:voew:视图层。C:Controller:控制层 Servlet


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马