富贵必从勤苦得,男儿须读五车书
Servlet 与 JSP
- nginx 可以部署静态内容
- tomcat 可以部署动态内容
常见操作
- startup.bat
- shutdown.bat ctrl+C 找后台 java 进程
- server.xml
- 可以端口,配置字符集,虚拟主机 …
maven
pom.xml GAV 坐标
<dependency>
<groupId>组织
<artifactId>项目
<version>版本
</dependency>
servlet 服务器端小程序
@WebServlet(urlPatterns="/映射路径")
class MyServlet extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException{
// 处理请求和响应的代码
String 参数值 = request.getParameter("请求参数名");
// 用response返回响应
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.getWriter().print("<html>");
}
}
jsp 也可以动态html
<%@page contentType="text/html;charset=utf-8" language="java"%>
<html>
<%
java
%>
</html>
==============================
Servlet
1. post 请求中的汉字会有乱码问题:
原因:
String sex = URLEncoder.encode("男", "utf-8");
System.out.println(sex);
// iso-8859-1
String result = URLDecoder.decode("%E7%94%B7", "iso-8859-1");
System.out.println(result); // ç”·
解决方法,在调用 getParameter 方法之前:
request.setCharacterEncoding("utf-8")
2. request 重要方法
request.getParameter(“参数名”) ==> 返回参数值
request.getParameterValues(“参数名”) ==> 返回参数值的数组
request.setCharacterEncoding(“解码的字符集”);
request.getMethod(); ==> 返回请求方式 get, post
request.getRequestURI(); ==> 返回当前的请求路径
request.getRemoteAddr(); ==> 获取访问者的ip地址
3. 一个请求分别几个部分
GET 两个部分
GET 路径/HTTP 1.1 ==> 请求行
请求头
Host: 要访问那个虚拟主机 一个服务器下有多有 host, 每一个host 下,又有多个应用程序
Accept: 可以处理的内容格式:例如 text/html
Accept-Encoding : 能够支持的压缩格式
Accept-Language : 支持的语言, 例如 zh-CN
POST 三个部分
Content-Type: 请求体的格式 application/www-form-urlencoded (普通表单格式)
Content-Length: 请求体内容的长度
请求体
post的请求参数放入了请求体当中,例如:username=zhangsan&password=123
如果有中文,会自动编码
4. 响应分成3个部分
- 状态码
- 200 表示响应正确返回
- 404 表示请求的资源不存在
- 500 表示服务器内部出现了异常
- 304 表示该内容没有被修改,那么服务器只会返回状态码和头,不需要返回响应体(图片,html,css,js)
- 响应头
- content-type: 响应的内容格式, 例如 text/html;charset=utf8
- content-length: 响应体的长度(字节)
- Date: 响应生成时间
- 响应体
html内容,图片内容
5. 返回一个动态图片
6. 请求转发
servlet 中还是用来处理表单请求
跳转至jsp (请求转发)
jsp 用来生成html代码并返回
request.getRequestDispatcher("jsp路径").forward(request, response);
如何把servlet中的变量传递给jsp显示
作用域传参
存
request.setAttribute("变量名", 对象);
取(在jsp页面),通过 EL 表达式取
${ 变量名 }
${ 变量名.属性名 } el 表达式中的属性名,对应着java对象中的 get,set方法名
getUsername()