Servlet & JSP : 一、小姐,来桶全家桶不?(Servlet)
小生不才,大二下半学期第二个星期,近11月博客园。星期六闲来看看经典书。重温下Serlvet。
HTTP协议是通过互联网(internet)或企业内部网(intranet)交换数据。介绍下http请求,http响应的过程。
#KFC点全家桶 – HTTP实现的是资源的请求和传送,类似点单。1)请求(request):小姐向服务员post请求:“来个全家桶”。(post,get是最常用的,下文HttpServlet中会涉及.)
2)回复(response):服务员根据情况,回应顾客的请求。
#多发情况-服务员的响应
1)服务员准备全家桶,交给小姐。(返回 200 成功状态码)
2)服务员今天不销售全家桶,反馈无。(无法找到某资源404)
3)服务员将命令转给准备的厨师。(重定向redirect)
KFC组织图(Serlvet 重要成员)
javax.servlet.Servlet,先搞个kfc机构出来–引例#MyServlet类
package sedion.jeffli.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebServlet; @WebServlet(name = "MyServlet" , urlPatterns = {"/my"}) public class MyServlet implements Servlet{ private transient ServletConfig servletConfig; @Override public void destroy() { // TODO Auto-generated method stub @Override public ServletConfig getServletConfig() { // TODO Auto-generated method stub return servletConfig; @Override public String getServletInfo() { // TODO Auto-generated method stub return "M 0333333333y Servlet"; @Override public void init(ServletConfig arg0) throws ServletException { // TODO Auto-generated method stub this.servletConfig = arg0; @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { String servletName = servletConfig.getServletName(); arg1.setContentType("text/html"); PrintWriter writer = arg1.getWriter(); writer.print(" html head /head body Helo:"+servletName+" /body /html }
然后web工程部署,tomcat 7 注意要7以上。然后火狐敲入:http://localhost:8080/web工程名/my
解剖源码(小生温州医科大学,恶心一下提提神)
WebServlet注解类型来声明一个Servlet。在声明同时,还可以告诉容器那个URL调用这个Serlvet。name是可选的,urlPattern也是可选的,但几乎都会用到它。urlPattern告诉容器,/my模式可以调用这个MyServlet。(一个通道,方便购买全家桶,小姐你要吗?),自然用web.xml部署描述也是可以的。
MyServlet类,重写了Servlet类中的init→service→destroy方法,属于Servlet生命周期方法。
其中service方法,会根据请求的方法,进行调用下面的方法。
#ServletRequest
getParameter最常用的方法。通常用来返回一个html表单域的值。也可以用来获取查询字符串的值。例,利用URL调用:http://localhost:8080/servletTest/my?id=jeffliId
就可以用下面语句来获取id的值:String id = request.getParameter(“id”);
#ServletResponse
在调用service方法之前,Servlet容器会创建一个ServletResponse。其中定义的getWriter()方法,返回可将文本床给客户端java.io.PrintWriter。默认PrintWriter对象采用ISO-8859-1编码。 #ServletConfig @WebServlet中以下面这种方式初始化值,值由:键和值。@WebServlet( name = "MyServlet" , urlPatterns = {"/my"}, initParams = { @WebInitParam(name="jeffliName",value="QiangqiangLi") )#ServletContext 每个web应用只有一个context,在分布式环境下,一个应用可以同时分布到多个容器,并且每个java虚拟机都有一个ServletCotext对象。
这个抽象类给我们完成了Servlet接口中所有方法提供默认实现等,方便了我们用。如果MyServlet类继承GenericServlet,我们只需要重写service方法即可。(小姐,你坐着不用走普通流程,我们给你绿色通道。全家桶马上来!)
Http Servlet两种特性:
1)不覆盖service方法,而是覆盖doGet,doPost。极少情况下,覆盖doHead,doPut,doTrace,doOptions或doDelete。
2)用HttpServletRequest和HttpServletResponse 代替 ServletRequest 和ServletResponse。因为将请求相应对象分别从Servlet容器向下转换。
HttpServletRequest
HttpSession getSession() 返回session对象,没有的话,创建新的session对象。
四.Servlet完成一次请求处理的过程从客户端(Guest)向服务器发送HTTP请求,该HTTP请求传递给Servlet Container。该Container负责:
分析HTTP请求的信息,并新建request对象,将HTTP请求中的信息放入request对象
新建response对象 根据web.xml(或注释生成),查找URL对应的Servlet对象。如果Servlet对象不存在,则新建相应Servlet对象。 创建新的线程,用于处理本次请求。线程拥有指向request和response对象的引用。Servlet_输出流jsp注意事项 订阅专栏 Servlet输出流两种方法以及注意事项 HTTP 响应码 以及 各自对应解释 关于 Web API 技术标准的开发文档网站(https://developer.mozilla.org)
二哥聊RPA 公号「二哥聊RPA」。关注我,一起洞察 RPA ◎ RPA创业者 ◎ 现明堂红木商业顾问,为十月结晶、可啦啦、鑫蜂维等多家企业提供 RPA 咨询服务 ◎ 希望帮助大家在 RPA 上做一些力所能及的事情
相关文章
- Redisson初级原理 & Redisson主从一致性的原理
- CVE-2020-36179/80/81/82:Jackson-databind SSRF&RCE
- json_decode&json_encode傻傻分不清
- onpropertychange & oninput兼容性
- Java魔法类 & Unsafe 未完结
- ECCV&CVPR论文速递2022.7.5!最新成果demo展示
- CSP Level 3浅析&简单的bypass
- 7 Papers & Radios | 一句话为视频加特效;迄今为止最全昆虫大脑图谱
- JSP jsp:fallback:提示信息标签
- JSP jsp:getProperty:数据获取标签
- 使用JSP快速连接Oracle数据库(jsp与oracle连接)
- JSP搭建MySQL数据库连接测试(jsp测试连接mysql)
- 简单搭建JSP与SqlServer的数据库连接(jsp连接sqlserver)
- 基于JSP和MySQL的用户注册系统设计(jsp mysql 注册)
- 使用JSP连接Oracle数据库的技术实现(jsp 连oracle)
- 数据库JSP实现对Oracle数据库的访问(jsp访问oracle)
- 使用JSP实现Oracle数据库分页(jsp分页oracle)
- 如何增加Oracle数据库的AMP值(amp值oracle)
- AMP与Oracle结合提升数据库性能($amp oracle)