[Java手记]Servlet技术
什么是Servlet
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和服务器上的数据库或应用程序之间的中间层。
使用 Servlet,您可以收集来自网页的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
Servlet基本响应逻辑
//Servlet类
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(name = "Servlet", value = "/Servlet")
public class Servlet extends HttpServlet {
//处理Get请求
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String s="这是Servlet显示的";
response.setCharacterEncoding("GBK");//设置响应数据的编码方式
request.setCharacterEncoding("GBK");//设置请求编码
PrintWriter pw=response.getWriter();
pw.print(s);
String name=request.getParameter("uname");//获取前端uname值
String pwd=request.getParameter("upwd");//获取前端upwd值
pw.print("您输入的用户名是:"+name+"您输入的密码是:"+pwd);
}
//处理Post请求
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
}
//html5前端
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"><!--设置响应编码为UTF-8-->
<title>用户登入</title>
</head>
<body>
<!--action表示要将表达数据交给那个程序处理,method表示请求类型-->
<form action="/MyWeb_war_exploded/Servlet" method="post">
用户名:<input type="text" name="uname"><!--创建一个文本输入框,声明名字为uname-->
密码:<input type="password" name="upwd"><!--创建一个密码输入框,声明名字为upwd-->
<input type="submit"><!--提交后交由/MyWeb_war_exploded/Servlet处理-->
</form>
</body>
</html>
Servlet里使用Cookie
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = "Servlet", value = "/Servlet")
public class Servlet extends HttpServlet {
//处理Get请求
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("GBK");//设置响应数据的编码方式
request.setCharacterEncoding("GBK");//设置请求编码
Cookie cookie=new Cookie("name","张三");//设置一个Cookie值
cookie.setMaxAge(15);//设置cookie有效期为15秒
response.addCookie(cookie);//添加Cookie
//获取Cookie
Cookie[] cookies=request.getCookies();
for(Cookie coo:cookies){
System.out.println("键:"+coo.getName()+"值:"+coo.getValue());
//登入信息Cookie用IF判断coo里是否有正确的值,决定是否成功登入
}
}
//处理Post请求
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
}
Session
Session与Cookie的区别
Cookie保存在浏览器
Session保存在服务器
Cookie存储信息小于登入4KB,一个站点不超过20个
Session没有限制
Cookie只能保存ASCII字符
Session没有限制
Cookie客户端可见,不安全
Session存储在服务器,不存在信息泄露
Cookie有效期内无论是否关闭窗口都有效
Session关闭窗口就失效
Session使用案例
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = "Servlet", value = "/Servlet")
public class Servlet extends HttpServlet {
//处理Get请求
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("GBK");//设置响应数据的编码方式
request.setCharacterEncoding("GBK");//设置请求编码
//添加Session
HttpSession hs=request.getSession();
hs.setMaxInactiveInterval(15);//设置有效时间为15秒
hs.setAttribute("name","李四");//设置Session的值
//获取Session
System.out.println(hs.getAttribute("name"));
}
//处理Post请求
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
}
请求转发和从定向
请求转发是一次请求,重定向是两次请求;
请求转发可以共享请求参数 ,重定向之后,就获取不了共享参数了;
//请求转发是将客户端请求交给另一个程序处理,地址不变
//请求转发
request.getRequestDispatcher("/ServletB").forward(request,response);
//从定向是重新发送一个新的请求到另一个程序处理
//从定向
response.sendRedirect("/ServletB");//从定向需要填写完整的地址
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
屠龙少年!
喜欢就支持一下吧