标签:
重载、覆盖(重写)
重载是类的多态性的表现主要是方法重载,方法名称相同,参数类型、多少不同,返回值可以相同
覆盖(重写)是把父类的方法做一些修改,名称、参数、返回类型必须相同。可以是使用super引出父类;注意:子类的修饰符权限不能小于父类,private的父类方法、final的父类方法都不能被覆盖,抛出的异常范围只能更小
接口(interface)与抽象类(abstract):类只能继承一个,接口可以实现多个,接口属于特殊的抽象类
接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。
抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。
人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.
所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。
抽象类的方法可以是抽象与非抽象,可以是公开
接口的方法必须是公开、抽象、静态、final
String a="s" 、 String c=new String("s") 、new StringBuffer("s")的区别
所有直接赋值的String都是在同一个链接池里面,引用是相同的 ;而new String("s") 则每次新建一个引用
所以 String b="s" a==b a.equals(b) 都是true ;a==c则是false a.equals(c)则为true
这两种方式都是不可变的,不能够直接拼接。
new StringBuffer("s")的长度是可变的,可以任意的拼接
collection(类基):接口为List(有序):实现类为vector、Set(无序、不同)
List与vector的区别是前者效率高,线程不安全,后者相反,是同步的
Map不属于collection!!
spring的AOP(依赖注入)
aop注入主要分为:接口注入、构造注入、属性注入(getter、setter:又成为设值注入)
当为构造注入时候,此对象的其它对象优先(优先依赖注入)
当为设值注入时候,优先实例化对象,再实例化所依赖对象(优先被依赖注入的实例),这种简单、直观
当设值注入、构造注入共存时候。前者优先,及当前对象优先创建
HttpServletRequest与HttpServletResponse
HttpServletRequest继承与ServletRequest,可以使用servlet的方法(doGet、doPost···)
主要方法:getAuthType(); ---返回证明配置的名字用于保护servlet
getContextPath();---返回部分请求的uri指出上下文的对应关系
getCookies();---返回一个数组包涵所有客户端发送的请求cookie对象
getDateHeader(java.lang.String name);--返回指定的请求表头值,并用长整型描绘这个日期对象
getHeader(java.lang.String name);--返回指定的请求表头文件为字符型
getHeaderNames();--返回这个请求容器所有表头文件名用枚举的方法
getHeaders(java.lang.String name);--返回指定文件头的所有值用一个字符型对象的枚举
getIntHeader(java.lang.String name);--返回指定请求文件的值用整型
getMethod();--返回处理这个请求Http方法的名字
getPathInfo();--当客户端发送一个url请求的时候返回与其相关联的额外的信息路径
getPathTranslated();--在servlet名字后返回一些扩展的路径信息,但在query string 前转化为他真实的地址
getQueryString();--返回query string ,在包含在这个请求url后
getRemoteUser();--返回用户使用这个请求的注册,如果这个用户已经通过验证,或者没有通过验证,返回null
getRequestedSessionId();--返回指定用户的session Id
getRequestURI();--返回部分这个请求的url从这个协议的名字 到这个HTTP请求的第一行 query string
getRequestURL();--在客户端请求时重新建立url
getServletPath();--返回一部分这个请求的url调用servlet
getSession();--返回与当前请求有关联的session,如果这个请求没有session就创建一个
getSession(boolean create);---返回与这个请求有关联的HttpSession,若没有session就创建他为真并返回新的session
getUserPrincipal();--返回一个java.security.Principal类型的对象敖汉当前通过验证的用户名称
isReqeustedSessionIdFromCookie();--检查这个请求的session ID是否来自一个cookie
isRequestedSessionIdFromURL();--检查这个session Id 的请求是否来自一个部分请求的URL
isRequestedSessionIdValid();--检查请求的session ID 是否有效
isUserInRole(java.lang.String role);--返回一个布尔值标志用来判断通过验证的用户是否包涵在制定的角色中
下面开始HttpServletResponse(对象可以向客户端发送三种类型的数据:a.响应头b.状态码c.数据)
常见应用:
a.使用OutputStream向客户端写入中文:
String data = "中国";
OutputStream stream = response.getOutputStream();//获取一个向Response对象写入数据的流,当tomcat服务器进行响应的时候,会将Response中的数据写给浏览器
stream.write(data.getBytes("UTF-8"));
//此时在html页面会出现乱码,这是因为:服务器将"中国"按照UTF-8码表进行编码,得到对应的码值假设是98,99,服务器将码值发送给浏览器。浏览器默认按照GB2312进行解码,在GB2312码表中对应的字符已不是"中国"
正确代码如下:
response.setHeader("Content-type","text/html;charset=UTF-8");//向浏览器发送一个响应头,设置浏览器的解码方式为UTF-8
String data = "中国";
OutputStream stream = response.getOutputStream();
stream.write(data.getBytes("UTF-8"));
b.使用Writer向客户端写入中文:
PrintWriter writer = response.getWriter();
writer.write("中国");//同样会出现乱码,这是因为我们将"中国"写入response对象时,tomcat服务器为了将数据通过网络传输给浏览器,必须进行编码,由于没有指定编码方式,默认采用ISO8859-1,
当浏览器接收到数据后,根据GBK解码必然出现乱码
正确代码如下:
response.setCharacterEncoding("UTF_8");//设置Response的编码方式为UTF-8
response.setHeader("Content-type","text/html;charset=UTF-8");//向浏览器发送一个响应头,设置浏览器的解码方式为UTF-8,其实设置了本句,也默认设置了Response的编码方式为UTF-8,但是开发中最好两句结合起来使用
//response.setContentType("text/html;charset=UTF-8");同上句代码作用一样
PrintWriter writer = response.getWriter();
writer.write("中国");
c.使用Response实现文件下载:
String path = this.getServletContext.getRealPath(“/中国.jpg”);
String fileName = path.subString(path.lastIndexOf(“\\”));
Response.setHeader(“content-disposition”,”attachment;filename”+URLENcode r.encode(fileName,”UTF-8”));//设置响应头,告诉浏览器,该响应是下载响应,如果文件名包含中文,必须使用URL编码……对文件进行读写
标签:
原文地址:http://my.oschina.net/u/2297250/blog/376219