您的位置:首页 > 编程语言 > Java开发

java中路径总结&servletpost和get乱码解决

2018-10-31 21:40 246 查看
版权声明:本文为博主原创,无版权,未经博主允许可以随意转载,无需注明出处,随意修改或保持可作为原创! https://blog.csdn.net/qq_41517071/article/details/83591126

路径:



一般包括:
 
 超链接:
 
 form表单: 

 重定向: 
 
转发: 
 
包含:
 
ServletContext对象获得资源: 
 
url-pattern路径: 
 
 
上面的路径主要分为两大类:
 
a:客户端路径:

           超链接: 
              form表单:
           重定向: 
       
  相对路径:/:相对于当前的
  主机名称:  绝对路径:http:// localhost:8080 / javaEE-09 / AServlet?username = lisi&password = 321; 
   
 b:服务器端路径: 
   
 转发:    
    包含: 
  ServletContext对象获得资源:/: 
  url-pattern路径:/:
  
  服务器端只能使用相对路径: 
  /:  开头:::是是以/开头
   :  
**强烈建议:使用/开头:使用/是相对于当前web应用程序。** 
  
  
  c:获得资源路径的总结: 


  获得资源方法:三种:

1  ServletContext 对象获得资源:  / : web应用:  
2 Class : /: 相对于类路径:    
         : 不是/开头 相对于当前文件的存放的位置。 
         
3 loader: / : 都是相对于类路径:
          :
  
  
  三:编码: 
  
   响应编码: 
    response.getWriter(“中文“); 直接响应中文会出现乱码问题: 
    
 (1)乱码产生的原因:字符 
      
      流:PrintWriter默认使用西欧字符集:  
      并且客户端浏览器使用:默认使用gbk解码:   
      最终产生乱码:两层乱: 
      
      
      解决: 
         告知服务器:编码的时候使用utf-8: 
      API:方法:response.setCharacterEncoding(“utf-8”);
      
      告知浏览器:使用utf-8进行解码: 
      API:response.setHeader(“content-type”,“text / html; charset = utf-8“); 
      
  
     便捷方式解决:   response.setContentType(”text / html; charset = utf-8“);

[code]import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Servlet implementation class CServlet
*
*  解决响应编码的问题:
*/
public class CServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
* @see HttpServlet#HttpServlet()
*/
public CServlet() {
super();
// TODO Auto-generated constructor stub
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*
* 乱码产生的原因:
*
*  字符流: PrintWriter默认使用西欧字符集:
*  并且客户端浏览器使用: 默认使用gbk 解码:
*  最终产生乱码: 两层乱:
*
*
*  解决:
*  客户端服务器:  编码的时候使用 utf-8 :
*  API: 方法: response.setCharacterEncoding("utf-8");
*
*/

//response.setCharacterEncoding("utf-8");// 设置当前的响应编码为: utf-8

//设置一个响应头信息:  告知客户端浏览器使用 utf-8进行解码:
//response.setHeader("content-type", "text/html;charset=utf-8");

// 便捷方式:
response.setContentType("text/html;charset=utf-8");

PrintWriter out = response.getWriter();
out.append("Served at: ").append(request.getContextPath());
out.println("<br/>");
out.println("俊哥");

out.println("ninhao~");;

out.close();

}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}

}



    

 
     
四:请求编码: 
  HTTP://本地主机:8080 / JAVAEE-09 / DServlet用户名=你好; 

  原因:客户端浏览器:您好编码的格式不确定。不同的客户端浏览器不一样。 
                服务器端:使用iso-8859-1 
                
                
                
    post请求: 
    (1)确定html页面使用的编码格式:<meta>决定: 
    (2)在服务器端:设置服务器解析请求体的解码: 
      API:request.setCharacterEncoding(“utf-8”);
    
  get请求:get请求提交的参数不在请求体当中,上述方法不生效: 
          案例:
         String username = request.getParameter(“username”);
        //反编:获得最原始字节数组:   
        byte [] bytes = username.getBytes(“iso-8859-1”);
        
        //使用自己制定的
        字符集进行解码:  String name = new String(bytes,“utf-8”);
   
     
     
   五:URI: 
   URI:编码:当客户端浏览器,在传递一些特殊字符的时候,需要对其进行URI编码.post 
   :请求能够自动获得uri编码。服务器能够自动解析: 
   get: 

   encodeURIComponent()
   
   
   实现步骤: 
   (1)定义一个字符串: 
   (2)使用utf-8获得字节:
   数组; (3)数组当中每个值加上256。 
   (4)获得每个值的十六进制。 
   (5)在每个值前边加上%; 
   
  六:JSP:在小服务程序之后诞生: 
 1:定义:(Java服务器页面)和HTML的作用相同;   
   。JSP属于动态的资源嵌入的Java代码在页面当中可以嵌入变量: 
   
 2:jsp组成: 
  html + java脚本+动作标签; 
  
  
 3:在jsp上嵌入java代码: 
 
    
<%...%>:Java语句;  
<%= ...%>:Java表达式;向浏览器输出内容: 
<%!...%>:Java定义类成员;成员方法,成员变量: 

  4:jsp的本质: 
   jsp:本质上就是一个servlet。 
   当客户端浏览器访问jsp页面,tomcat服务器会将动态资源,生成一个静态资源
   
   .jsp ---- - “servlet ----> out.println();   
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: