java技术--路径访问总结

1.HttpServletrequest 与HttpServletResponse总结

   1.1.向客户端发送数据找HttpServletResponse,从客户端取数据找HttpServletRequest.
   1.2.客户端主动建立连接、发送 HTTP 请求的来初始化一个事务,服务器不负责连接客户端,或创建一个到客户端的回调连接(callback connection)
   1.3.客户端浏览器发出的请求被封装成为一个HttpServletRequest对象
   1.4.所有的信息包括请求的地址,请求的参数,提交的数据,上传的文件客户端的ip甚至客户端操作系统都包含在HttpServletRequest对象内
   1.5.一个 HTTP 请求包含以下三部分:
           a.请求地址(URL):URI 指明了请求资源的地址,通常是从网站根目录开始计算的一个相对路径,因此它总是以斜线 “/”开头的。
                                      URL 实际上是 URI 的一种类型
           b.请求头(Request headers):包含了一些关于客户端环境和请求实体(entity)的有用的信息
                                                       例如:客户端浏览器所使用的语言,请求实体信息的长度等,请求头的格式:请求头名+英文空格+请求头值
           c.实体数据(Entity body)

2.java获取客户机信息的方法

request.getServletContext().getRealPath("/")  获取项目所在服务器的全路径,如:D:\Program Files\apache-tomcat-7.0.25\webapps\TestSytem\
request.getServletPath()    获取客户端请求的路径名,如:/object/delObject
request.getServerName()    获取服务器地址,如:localhost
request.getServerPort()    获取服务器端口,如8080
request.getContextPath()    获取项目名称,如:TestSytem
request.getLocalAddr()    获取本地地址,如:127.0.0.1
request.getLocalName()    获取本地IP映射名,如:localhost
request.getLocalPort()    获取本地端口,如:8080
request.getRealPath("/")    获取项目所在服务器的全路径,如:D:\Program Files\apache-tomcat-7.0.25\webapps\TestSytem\
request.getRemoteAddr()    获取远程主机地址,如:127.0.0.1
request.getRemoteHost()    获取远程主机,如:127.0.0.1
request.getRemotePort()    获取远程客户端端口,如:3623
request.getRequestedSessionId()    获取会话session的ID,如:823A6BACAC64FB114235CBFE85A46CAA
request.getRequestURI()    获取包含项目名称的请求路径,如:/TestSytem/object/delObject
request.getRequestURL().toString()    获取请求的全路径,如:http://localhost:8090/TestSytem/object/delObject

3.获得客户机请求头

 getHeader(string name)方法 
 getHeaders(String name)方法 
 getHeaderNames方法    

4.出现乱码的原因和解决

4.1. java程序中默认的是中文字符----unicode
4.2. 系统会把在java程序中的unicode字符按照某种字符集编码的方式转换成字节数组,再通过浏览器输出,浏览器在输出的时候要进行解码,只有在这两种方式一样的情况下,才不会出现乱码
4.3. 设置编码的两种方式:
    response.setContentType("text/html;charset=utf-8");
    request.setCharacterEncoding("utf-8");
4.4.系统默认的编码方式为ISO8859-1,如果没有指定字符编码,则输出的都是乱码,
    而且ISO8859-1不支持中文,所以不管浏览器在解码的时候用的是什么字符集编码,在浏览器上的都是乱码
4.5.Post方式提交出现乱码:
    request.setCharacterEncoding("UTF-8"):设置服务器以UTF-8的编码接收数据后,此时就不会产生中文乱码问题了    
4.6. Get方式提交出现乱码
String name = request.getParameter("name");//接收数据
name =new String(name.getBytes("ISO8859-1"), "UTF-8") ;//获取request对象以ISO8859-1字符编码接收到的原始数据的字节数组,然后通过字节数组以指定的编码构建字符串,解决乱码问题

5.HttpServletResponse对象代表服务器的响应。这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法

   5.1.HttpServletResponse对象可以向客户端发送三种类型的数据:
        a.响应头(Response headers)
        b.状态码(Protocol—Status code—Description)
        c.实体数据(Entity body )    
   5.2.常用方法
 addHeader(String name,String value)  将指定的名字和值加入到响应的头信息中
 encodeURL(String url)  编码指定的URL
 sendError(int sc)  使用指定状态码发送一个错误到客户端
 setDateHeader(String name,long date  将给出的名字和日期设置响应的头部
 setHeader(String name,String value)  将给出的名字和值设置响应的头部
 setStatus(int sc)  给当前响应设置状态码
 HttpServletResponse.sendRedirect 方法对浏览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出对另外一个URL的访问请求;方法调用者与被调用者使用各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。
 response.setContentType("text/html;charset=utf-8");
 setContentType(String ContentType)  设置响应的MIME类型 ,页面的设置文本类型,获取或设置输出流的 HTTP MIME 类型。输出流的 HTTP MIME   类型。默认值为“text/html”。
 response.setHeader(“Refresh”,”2;url=”http://www.baidu.com”); 页面的刷新
消息实体内容 通过输出流对象进行设置,用以下两个方法:
 Response.getOutputStream()  字节输出流对象
 Response.getWriter()   字符的输出流对象     

扩展:java反射机制和类路径的获取
举例;在报com.test下建个类User
(1)this.getClass().getResource("").getPath():获取这个类所对应的classes文件所在路径
结果为:/D:/MyeclipseWorkspace4/WebRoot/WEB-INF/classes/com/test/
(2)this.getClass().getResource("/").getPath():获取这个类的路径,也就是classpath路径
结果为:/D:/MyeclipseWorkspace4/WebRoot/WEB-INF/classes/
(3)this.getClass().getClassLoader().getResource(“user.xml”).getPath():获取文件user.xml所在路径
结果为:/D:/MyeclipseWorkspace4/WebRoot/WEB-INF/classes/user.xml
(4)this.getClass().getClassLoader().getResource("").getPath():也是获取classpath路径

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值