1.请求响应的具体用法
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/*
* 响应数据
* getWrite() 字符输出流 (输出字符串)
* getOutStream() 字节输出流 (输出一切数据)
* 两种流都是像浏览器输出数据的
* 两种输出流只能使用一种不能同时使用 同时使用会报错
* */
@WebServlet("/test01")
public class demo extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//字符输出流
/*PrintWriter writer = response.getWriter();
writer.write("hello word!");*/
//字节输出流
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write("Hi!".getBytes());
}
}
---解决请求响应乱码问题
字符流乱码问题解决方式
package com.liuboss;
import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/test02")
public class test01 extends HttpServlet {
//字符输出流
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//会出现乱码问题
//同时设置客户端和服务端相同编码格式解决乱码问题
response.setContentType("text/html;charset=UTF-8");
PrintWriter writer = response.getWriter();
writer.write("<h1>永乐大帝!!!<h1/>");
}
}
字符流
package com.liuboss;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.ws.WebServiceRef;
import java.io.IOException;
@WebServlet("/test03")
public class test02 extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//字节输出流乱码问题解决
response.setContentType("text/html;charset=UTF-8");
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write("永乐大帝!!!".getBytes("UTF-8"));
}
}
重定向 01转发到02
package com.liuboss;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/Servlet01")
public class test03 extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//重定向
//获取请求参数
String username = request.getParameter("username");
System.out.println(username);
response.sendRedirect("Servlet02");
}
}
package com.liuboss;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/Servlet02")
public class test04 extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
System.out.println(username);
response.setContentType("text/html;charset=UTF-8");
PrintWriter writer = response.getWriter();
writer.write("<h1>永乐大帝!!!!!<h1>");
}
}
重定向与请求转发
请求重定向
客户端行为,response.sendRedirect() 从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL会变
客户端请求服务器,服务器返回重定向,客户端再自动请求重定向的地址。
请求转发
服务器行为,request.getRequestDispather().forward(req,resp) 是一次请求,转发后请求对象会保存,地址栏的URL地址不会变
客户端请求服务器,服务器内部请求其他地址。
cookie的发送
package com.liuboss.demo;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/cookie01")
public class Cookie01 extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//cookie的发送
Cookie cookie = new Cookie("name","admin");
response.addCookie(cookie);
}
}
cookie的获取
package com.liuboss.demo;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/cookie02")
public class Cookie02 extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//cookie的获取
Cookie[] cookie = request.getCookies();
if(cookie!=null&&cookie.length>0){
for (Cookie cook : cookie) {
String name = cook.getName();
String value = cook.getValue();
System.out.println("名称:"+name+","+"值:"+value);
}
}
}
}
package com.liuboss.demo;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/cookie01")
public class Cookie01 extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//cookie的到期时间
Cookie cookie01 = new Cookie("name","admin");
cookie01.setMaxAge(-1);
response.addCookie(cookie01);
Cookie cookie02 = new Cookie("name","admin");
cookie01.setMaxAge(30);
response.addCookie(cookie01);
Cookie cookie03 = new Cookie("name","admin");
cookie01.setMaxAge(0);
response.addCookie(cookie01);
}
}
获取session
package com.liuboss.demo;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
//获取session
@WebServlet("/test01")
public class Test01 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取sesion对象
HttpSession session = req.getSession();
//获取session的会话标识符
String id = session.getId();
System.out.println(id);
//获取session的创建时间
System.out.println(session.getCreationTime());
//获取最后一次访问时间
System.out.println(session.getLastAccessedTime());
//判断是否是新的session对象
System.out.println(session.isNew());
}
}
文件的上传
实现文件上传的前台代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<form method="post" enctype="multipart/form-data" action="update">
姓名:<input type="text" name="username"><br>
文件:<input type="file" name="myfile"><br>
<button>提交</button>
</form>
</body>
</html>
文件上传后台代码
package com.liuboss.update;
import javax.management.modelmbean.RequiredModelMBean;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.IOException;
//文件的上传
@WebServlet("/update")
@MultipartConfig //如果是文件上传一定要加该注解
public class Update01 extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("文件上传");
//设置编码方式
request.setCharacterEncoding("UTF-8");
//获取普通表单项(获取数据)
String username = request.getParameter("username");
System.out.println(username);
//上传文件
Part part = request.getPart("myfile");
//通过part对象得到上传的文件名
String fileName = part.getSubmittedFileName();
//获取上传文件文名称
System.out.println(fileName);
//获取文件存储路径
String filePath = request.getServletContext().getRealPath("/");
System.out.println(filePath);
//上传文件的指定路径
part.write(filePath+"/"+fileName);
}
}
文件下载
在web资源目录下创建相关的资源文件进行存储 路径相同
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>下载界面</title>
</head>
<body>
<!--测试浏览器能够识别的资源-->
<a href="down/text.txt">文本文档</a>
<a href="down/login.png">图片资源</a>
<a href="down/test.rar">压缩资源</a>
</body>
</html>