发表于: 2018-01-20 21:24:38

1 488


今天完成的事情:(一定要写非常细致的内容)

1、过滤器,filter,位于web.xml中。贴上曾经日报写过的,当作总结:

1)在控制台出现中文编码错误时,需要加入的过滤器

<filter>
 <filter-name>characterEncoding</filter-name>
 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
 <init-param>
   <param-name>encoding</param-name>
   <param-value>UTF-8</param-value>
 </init-param>
</filter>

当前台JSP页面和JAVA代码中使用了不同的字符集进行编码的时候,就会出现表单提交的数据或者上传/下载中文名称文件中有乱码的问题,那这个类就可以用了。filter 的翻译是过滤器。encoding用来指定一个具体的字符集,此处用于指定UTF-8。

点击方法 .CharacterEncodingFilter,会看到有两个bolean类型参数,当请求被提交之后,过滤器会判断request.getCharacterEncoding()是否为null,如果是null,那么就会进行request.setCharacterEncoding("UTF-8")的操作,如果不是null,那么过滤器什么也不会做。CharacterEncodingFilter类可以通过简单配置来实现字符集转换的功能。

2)HiddenHttpMethodFilter过滤器

部分浏览器form表单只支持GET与POST请求,而DELETE、PUT等method并不支持,spring3.0添加了一个过滤器,可以将这些请求转换为标准的http方法,使得支持GET、POST、PUT与DELETE请求,该过滤器为HiddenHttpMethodFilter。

HiddenHttpMethodFilter的父类是OncePerRequestFilter,它继承了父类的doFilterInternal方法,工作原理是将jsp页面的form表单的method属性值在doFilterInternal方法中转化为标准的Http方法,即GET,、POST、 HEAD、OPTIONS、PUT、DELETE、TRACE,然后到Controller中找到对应的方法。_method这个参数名是 HiddenHttpMethodFilter 默认的。

<init-param>
 <param-name>methodParam</param-name>              <!--方法参数设置-->
 <param-value>_method</param-value>
</init-param>

<filter-mapping>                        <filter-mapping>

 <filter-name>HiddenHttpMethodFilter           <filter-name>characterEncoding

      </filter-name>                         </filter-name>

  <url-pattern>/*</url-pattern>               <url-pattern>/*</url-pattern>

</filter-mapping>                       </filter-mapping>

<filter-mapping>负责拦截的URL 全部以/的请求,如果<url-pattern>*. xx</url-pattern>,将会以拦截*.xx的请求。

通过<filter-mapping><filter-name>的值(与<filter>中的<filter-name>characterEncoding值一致)找到<filter></filter>中的<filter-class></filter-class>中的引用类来实现拦截。

3)在web.xml中通过contextConfigLocation配置spring,contextConfigLocation参数定义了要装入的 Spring 配置文件。如果想装入多个配置文件,可以在 <param-value> 标记中用逗号作分隔符。

4)在web.xml里配置Listener,我们要实现一个请求home.html,然后返回home.jsp视图资源。则当home.htm请求到达时,我们需要DispatcherServlet来处理该请求,所以首先配置该Servlet。配置的servlet-name要上下一致。

<!--配置前端拦截器-->
<servlet>                    <!--声明DispatcherServlet,springmvc入口-->
 <servlet-name>springmvc</servlet-name>
 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 <init-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:springmvc.xml</param-value>
 </init-param>

 <load-on-startup>1</load-on-startup>

 <!--数值越小,优先级越高 1==服务器启动的时候就加载-->

</servlet>

同(3)中需要servlet-mapping,拦截请求,这里设置为  <url-pattern>/</url-pattern>

5)如果DispatcherServlet拦截"/",为了实现REST风格,拦截了所有的请求,那么同时对*.js,*.jpg等静态文件的访问也就被拦截了。要解决这个问题,需要激活Tomcat的defaultServlet来处理静态文件。 <servlet-name>default</servlet-name>

2、学习jsp页面中三种语法和九个隐式对象

三种语法

  1)page
        该指令用于整个页面,定义与页面相关的属性,它是JSP页面和容器的通信员,一般放在JSP页面的第一行。与page相关的属性如下:
属性描述
buffer指定out对象使用缓冲区的大小
autoFlush控制out对象的 缓存区
contentType指定当前JSP页面的MIME类型和字符编码
errorPage指定当JSP页面发生异常时需要转向的错误处理页面
isErrorPage指定当前页面是否可以作为另一个JSP页面的错误处理页面
extends指定servlet从哪一个类继承
import导入要使用的Java类
info定义JSP页面的描述信息
isThreadSafe指定对JSP页面的访问是否为线程安全
language定义JSP页面所用的脚本语言,默认是Java
session指定JSP页面是否使用session
isELIgnored指定是否执行EL表达式
isScriptingEnabled确定脚本元素能否被使用
a、import="导包列表",可以多次导入,也可以用逗号分隔开。
b、language=“scriptingLangeuage”,指定在脚本元素使用的脚本语言,默认是Java。
c、contentType="cinfo",指定HTTP响应的头部的Content-Type值。客户端的浏览器会根据我们在contentType中指定的MIME类型和字符集代码来显示Servlet输出的内容。
常见的MIME类型有:
MIME类型文件格式
application/mswordMicrosoft Word文档
application/pdfAcrobat PDF文件
application/vnd.ms-excelMicrosoft Excel表格
audio/x-wavWAV格式的音频文件
text/htmlHTML格式的文本文档
text/cssHTML层叠样式表
text/plain普通文本文档
image/jpegJPEG格式图片
video/mpegMPEG格式视频文件

d、pageEncoding="peingo",指定页面的字符编码,如果设置了这个属性,则JSP页面的字符编码就是它指定的字符集,如果没有则默认的是ISO-8859-1。

    2)include
        该指令用于在JSP页面中包含一个文件,该文件可以是JSP页面、HTML网页、文本文件或一段Java代码。
            <%@ include file="相对于当前文件的" %>
    3)taglib
        该指令允许页面使用用户定制的标签。

    <%@taglib prefix="前缀" uri="具有唯一标识和前缀相关的标签描述符地址" %>

JSP支持九个自动定义的变量,江湖人称隐含对象。这九个隐含对象的简介见下表:

对象描述
request

HttpServletRequest类的实例

//封装了从客户端到服务器发出的请求信息。

response

HttpServletResponse类的实例   //用于对客户端的请求进行回应。以及处理http的连接信息,例如设置http文件头,设置cookie对象等。

out

PrintWriter类的实例,用于把结果输出至网页上

//用来向浏览器输出信息,除了输出各种信息外还负责对缓冲区进行管理。

sessionHttpSession类的实例//用来保存会话信息。可以实现在同一用户的不同请求之间共享数
applicationServletContext类的实例,与应用上下文有关   //可以在不同的用户之间共享信息。
configServletConfig类的实例      //封装了应用程序的配置信息。
pageContextPageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
page类似于Java类中的this关键字  //指向了当前jsp程序本身。
Exception

Exception类的对象,代表发生错误的JSP页面中对应的异常对象  

 //封装了jsp程序执行过程中发生的异常和错误信息。

  • 输入输出对象:out对象、response对象、request对象

通信控制对象:pageContext对象、session对象、application对象
Servlet对象:page对象、config对象
错误处理对象:exception对象

明天计划的事情:(一定要写非常细致的内容)

1、学习任务二深度思考,师兄的提问,在深度思考中看到,要在日报中更新

2、学习使用google的GSON解析json格式的数据

遇到的问题:(遇到什么困难,怎么解决的)

1、解决Controller中 @PathVariable

通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。

当使用@RequestMapping URI template 样式映射时, 即 someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。

如果你有路径变量的URL,例如www.myexampl.com/item/12/update,其中12是id,create是你想要用来指定执行的变量,以便使用单个表单进行更新,创建,你在你的控制器中这样做。这个机制确保一个路径变量绑定到一个给定的变量。

收获:(通过今天的学习,学到了什么知识)

学习了优秀师兄们的日报格式,需要展示问题要点,解决办法和个人思考。

在今天的学习中,我百度了不同的结果,在jsp菜鸟教程中,jsp语法页面,对语法的描述是在小字中,如JSP声明的语法格式:<%! declaration; [ declaration; ]+ ... %>;

JSP表达式的语法格式:<%= 表达式 %>;JSP注释的语法格式:<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>,而三种指令标签才是

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

在这里理解有误,三大指令是对的,基本语法应该是

1)jsp模板元素

网页静态内容,HTML的标签

2)jsp的脚本

小脚本<% Java代码%>:这个代码是写在service()中。变量也是service()中的局部变量。

表达式<%= %>:相当于out.print();

声明<%! %>:声明的是全局变量。

3)jsp注释

jsp形式的注释:<%–注释内容–%> (在html页面不会留下注释,安全)

html形式的注释:(不安全,会嵌入html页面中)。

另外对九种隐含对象的具体功能没有描述清楚,在CSDN JSP九大内置对象详解(一)http://blog.csdn.net/icarus_wang/article/details/51107470中简要了解作用,并添加到九种隐含对象表中

任务开始时间:2018.01.01
预计提交时间:2018.01.21
是否有延期风险:无,已延期

返回列表 返回列表
评论

    分享到