🌻今天进行JavaWEB的servlet学习
✅作者简介:大家好我是烫嘴的辛拉面,大家可以叫我拉面。
📜个人主页: weixin_49405762的博客
📕系列专栏: 经典算法习题集
🌞为大🔥推荐一款刷题神器哦 👉点击跳转进入网站
除了form表单之外都是get请求
HttpServletRequest— req——请求
所有请求的操作都用req对象来处理
当有请求来的时候,req就被实例化
HttpServletResponse— resp——响应
所有响应的操作都用resp对象来处理
当有响应来的时候,resp就被实例化
当你想要给出响应时,使用resp
我们要给出的响应,必须要展示在客户端(浏览器)
【servlet的匹配优先级最高】
如果使用路径匹配,必须有/
如果使用扩展名匹配,必须没有/
扩展名匹配与路径匹配无法同时设置
/
初始化
init方法什么时候执行
默认当我们第一次访问servlet的时候被调用,——延迟加载
初始化方法只执行一次
请求
常用的方法
System.out.println(req.getMethod()+“请求的方法”);
System.out.println(req.getContextPath()+“请求的根路径”);
System.out.println(req.getServletPath()+“请求的servletPath路径”);
System.out.println(req.getRequestURI()+“请求的URI”);
System.out.println(req.getRequestURL()+“请求的URL”);
System.out.println(req.getScheme()+“请求的协议”);
重要的方法——接受参数
// 接受参数,处理请求
String username = req.getParameter(“username”);
String password = req.getParameter(“password”);
// 接受参数,处理请求
// 根据key获取value
String username = req.getParameter("username");
String password = req.getParameter("password");
// 复选框返回多个值
String[] hobbies = req.getParameterValues("hobby");
// 获取key的值,根据key的值获取value
Enumeration parameterNames = req.getParameterNames();
while (parameterNames.hasMoreElements()) {
String s = parameterNames.nextElement();
String parameter = req.getParameter(s);
}
//获取请求中传过来键值对,返回值是一个map集合;
// 这个map集合的key是String,value是String[];
Map parameterMap = req.getParameterMap();
for (Map.Entry entry : parameterMap.entrySet()) {
String key = entry.getKey();
String[] value = entry.getValue();
}
由多个servlet来处理一个请求
请求转发是在服务器上完成的,根客户端无关
作用域
起作用的区域
req.setAttribute("name","张三");
// 获取
System.out.println("demo04.do-------->"+req.getAttribute("name"));
// 删除
req.removeAttribute("name");
req.getRequestDispatcher("/demo03.do").forward(req,resp);
// 给出响应
// 客户端与服务端的信息传递
// resp.setContentT
// 响应的字符集一定放在流之前
// 添加响应头,告诉浏览器以HTML的格式来解析响应字符串
resp.addHeader(“content-type”,“text/html;charset=utf-8”);
PrintWriter writer = resp.getWriter();
writer.write(“我是后台,已经接到你的请求了!!!”);
// 写字符
writer.write("login success!!!");
// 写字节
writer.println("");
// 流的操作
writer.flush();
writer.close();
resp.sendRedirect("index.html");
路径配置中【/与/*有什么区别】
【/*】——属于路径匹配,可以匹配所有的请求,路径匹配的优先级仅次于精确匹配的
会覆盖所有的扩展名匹配,非常恶劣的匹配规则(语法)
【/】——是servlet中的特殊匹配模式,优先级最低,不会覆盖任何的【url-patter】,匹配所有的请求
/和/*拦截静态资源
GET:请求的参数会在浏览器的地址栏中显示,不安全;请求的长度限制在1k之内
没有请求体,无法通过request去设置参数。
POST:请求的参数不会在浏览器的地址栏中显示,安全;没有长度限制
有请求体
请求转发和重定向的区别
重定向——是两次请求,是客户端行为,是浏览器的地址会发生改变,【重定向可以定义到任意地址】
请求转发——是一次请求,是服务器行为,浏览器地址不会发生改变,【转发只能项目内转发】
算法对程序员来说及其重要,语言和开发平台不断变化,但是万变不离其宗的是那些算法和理论,刷算法最最最直白的原因就是找一个好的工作,那刷题一定是必不可少的
现在算法刷题平台还是蛮多的,给大家介绍一个我认为与大厂关联最深的平台——牛客网

相较于其他平台,他们的题单更和工作,大厂靠拢,不光有面试必刷的101到题目,还有大量大厂真题,内容也全程免费,相较于其它会员费结算的来说 非常的友好

牛客网还支持ACM模式,没有练习过的一定要提前适应!像某团、某为,都要求自己处理输入输出,如果不提前练习会很吃亏的!
牛客的题解更新迭代也很快,讨论区也有奇技淫巧的分享,能帮你把所有盲点扫清楚,整体来说还是非常推荐去练习的~
传送门:牛客网