文章目录
Servlet 与 JSP
Servlet
1.post请求中的汉字会有乱码问题
原因:
URLEcoder.encode编码用的是utf-8
URLDecoder.decode浏览器解码用的是iso-8859-1
导致编解码方式不一致
解决方法:设置解码的字符集,而且设置必须出现在getParameter方法调用之前
request.setCharacterEncoding("utf-8");
2.request重要方法
request.getParameter(“参数名”); >返回参数值
request.getParameterValues(“参数名”); >返回参数值的数组(适用于多选框等)
request.setCharacterEncoding(“解码的字符集”);
request.getMethod();>返回请求方式(get或post)
request.getRequestURL();>返回当前的请求路径
request.getRemoteAddr();====>获取访问者的ip地址
3.一个请求分为几个部分
Get请求分为两个部分
(1)Get路径/HTTP 1.1 ====>请求行
(2)请求头:
Host:要访问哪个虚拟机 一个服务器下有多个host,每个host下又有多个应用程序
Accept:可以处理的内容格式:例如text/html
Accept-Encoding:能够支持的压缩格式
Accept-Language:支持的语言:例如zh-CN(中文简体)
Post请求分为三个部分
(1)Content-Type:请求体的格式:例如:application/www-form-i-urlencoded(普通表单格式)
(2)Content-Length:请求体内容的长度
(3)请求体:post请求参数放入了请求体当中,例如:username=zhangsan&password=123
如果有中文会自动编码
4.响应
分类:
(1)状态码
- 200 表示响应正确返回
- 404 表示请求的资源不存在
- 500 表示服务器内部出现了异常
- 304 表示该内容没有被修改,那么服务器只会返回状态码和头,不需要返回响应体(图片,html,css,js)
(2)响应头
- content-type:响应的内容模式,例如text/html;charset=utf-8
- content-length:响应体的长度(字节)
- Date:响应的生成时间
(3)响应体
html内容,图片内容
5.返回一个动态图片
6.请求转发
(1)servlet请求转发至jsp
servlet中用来处理表单请求,跳转到jsp中(请求转发)
jsp用来生成html代码并返回
request.getRequestDispatcher("jsp路径").forward(request,response);
(2)作用域传参
如何把servlet中的变量传递给jsp显示呢????
这里我们用到了作用域传参
request.setAttribute("变量名",对象);
在jsp页面怎么取作用域的值呢????
这里我们用到了EL表达式
EL表达式的格式:
${变量名}
${变量名.属性名} el表达式中的属性名对应着java 对象中的get,set方法名(去掉get/set首字母小写)
Eg:getUsername()---->username