发表于: 2018-01-20 21:24:38
1 486
今天完成的事情:(一定要写非常细致的内容)
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页面中三种语法和九个隐式对象
三种语法
属性 | 描述 |
---|---|
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 | 确定脚本元素能否被使用 |
MIME类型 | 文件格式 |
application/msword | Microsoft Word文档 |
application/pdf | Acrobat PDF文件 |
application/vnd.ms-excel | Microsoft Excel表格 |
audio/x-wav | WAV格式的音频文件 |
text/html | HTML格式的文本文档 |
text/css | HTML层叠样式表 |
text/plain | 普通文本文档 |
image/jpeg | JPEG格式图片 |
video/mpeg | MPEG格式视频文件 |
d、pageEncoding="peingo",指定页面的字符编码,如果设置了这个属性,则JSP页面的字符编码就是它指定的字符集,如果没有则默认的是ISO-8859-1。
<%@taglib prefix="前缀" uri="具有唯一标识和前缀相关的标签描述符地址" %>
JSP支持九个自动定义的变量,江湖人称隐含对象。这九个隐含对象的简介见下表:
对象 | 描述 |
---|---|
request | HttpServletRequest类的实例 //封装了从客户端到服务器发出的请求信息。 |
response | HttpServletResponse类的实例 //用于对客户端的请求进行回应。以及处理http的连接信息,例如设置http文件头,设置cookie对象等。 |
out | PrintWriter类的实例,用于把结果输出至网页上 //用来向浏览器输出信息,除了输出各种信息外还负责对缓冲区进行管理。 |
session | HttpSession类的实例//用来保存会话信息。可以实现在同一用户的不同请求之间共享数 |
application | ServletContext类的实例,与应用上下文有关 //可以在不同的用户之间共享信息。 |
config | ServletConfig类的实例 //封装了应用程序的配置信息。 |
pageContext | PageContext类的实例,提供对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中简要了解作用,并添加到九种隐含对象表中
评论