路径:
一般包括:
超链接:
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“);
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();