java_servlet

Wesley13
• 阅读 742

1.什么是Servlet

  servlet就是java里面一种类,只不过这种java类有一些特殊的应用,称呼他为servlet

2.servlet的作用

  可以让浏览器直接通过一个路径取访问。(一般Java类做不到这一点)

3.如何写一个servlet类

  3.1.三种实现方式:

  a.实现接口:javax.servlet.Servlet

  b.继承一个抽象类:javax.servlet.GenericServlet

  c.继承一个抽象类:javax.servlet.http.HttpServlet(常用)

  注意:

  Servlet中有五个抽象方法,最重要的就是service(ServletRequest arg0,ServletResponse arg1)

  GenericServlet实现了其他四个方法,并添加了一些新的方法,但service() 方法没有实现

  HttpService中无抽象方法,将service()方法转为doGet()方法和doPost()方法。所以在HttpServlet中调用doGet和doPost本质上都是在调用service方法,就是更加细化而已。

  doGet()和doPost()方法中的参数也由原先的ServletResquest和ServletResponse变为HttpServletResquest和HttpServletResponse

4.servlet的生命周期

  i. servlet是单例:在整个web项目运行期间,只会new一个对象。并且是当第一次访问时创建(new)

  ii. servlet对象的创建及销毁(服务器来做的):
    a.默认情况下,第一次被访问的时候tomcat创建servlet对象(调用无参构造器)
    b.tomcat调用init(ServletConfig config)方法 ,在servlet对象实例化之后,tomcat服务器会立马调用这个方法给servlet的实例进行初始化工作。
    c.客户端访问的时候,tomcat会调用service(ServletRequest req,ServletResponse res)方法
    d.在销毁servlet对象的时候会tomcat调用destroy()方法.

  iii.如果想让servlet在服务器(tomcat或其他)开启时就创建,可以在web.xml文件中配置

     
             LifeServletTest
             全限定名(eg:com.sun.Servlet)
             1
      

    中的数字 越小表示当服务器启动时就越先被创建

5.关于HttpServlet中的doGet()和doPost()方法

  (其实可以记post的,因为常用的提交方式就是dopost和doget)

  get方式:(数据拼接在url请求后,格式为:资源名?name=sss&passwd=111&age=22)
           a.浏览器中输入地址(URL)然后回车
           b.超链接
           c.页面中引入的css样式文件
           d.页面中引入的js的文件(javascript)
           e.java_servlet
           f.form表单中method="get"
           g.ajax中可以设置异步提交请求的方式为get
           f.其他

  post方式:(数据放在http请求的请求体内)

    a.form表单中method=“post"

    b.ajax中设置异步提交请求的方式为post

    c.其他

7.Servlet中接收客户端传过来的参数

  i.格式

    参数名称=参数值

  ii.获取方式

    String value=request.getParameter("key");

    (这种传参 参数的类型都是字符串)

    如果客户端中form表单用了多选框,就用数据接收

    String [] values=requeset.getParameter("arr");

8.中文乱码问题

  a.需要修改tomcat中的配置文件,然后重新启动tomcat服务器.
         server.xml:在这个文件中找到修改端口号的那个标签,然后加入一个新的属性URIEncoding="UTF-8",或者是写GBK、GB2312
         例如:
        

  b.在方法第一句加上req.setCharacterEncoding("GBK");//UTF-8

  c.浏览器端乱码时(写在方法的第一第二行)

     resp.setCharacterEncoding("GBK");
          resp.setContentType("text/html;charset=GBK");

9.servlet跳转

  跳转分为两种形式(服务器内部跳转,和客户端重定向)

  a.服务器内部跳转(用到的是request对象)

      i.通过request对象,获取跳转对象---》RequestDispatcher rq=request.getRequestDispatcher(page);

      ii.跳转---》rq.forward(request,response);

      (一般简写:request.getRequestDispatcher(page).forward(req,res);)

  b.客户端重定向(用到的时response对象)

    response.sendRedirece(page);//一般不用

  java_servlet

  注意:http请求都是无定向的,request存放的信息只有单次请求有效,所以重定向无法携带数据

10.前端如何找到Servlet

  a.在web.xml中写配置

    

      随便起,跟下边servlet-mappin中的一样就行

      

    

    

      跟上边一样

      /资源名(前端通过这个名找到后端哒)

    

  b.在类上写注解@WebServlet("/资源名")

     eg:@WebServlet("/Test")
        public class Test extends HttpServlet {...}

   emmmmm....一般都是用eclipse直接新建Servlet,上边自己有,就不用自己配了

11.路径问题

12.三个容器---------request、session、application

13.会话追踪,将http无定向协议实现追踪技术——session、cookie

14.URL重写

15.Filter(过滤器)

16.Listener(监听器)

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Stella981 Stella981
3年前
Servlet概述
一、Servlet概述1.sun公司提供的动态web资源开发技术。本质是上一段java小程序,要求这个小程序必须实现Servlet接口,以便服务器能够调用。2.开发Servlet的两个步骤实验:Servlet的快速入门(1)步骤一:写一个java程序实现Servlet接口(此处直接继承了默认
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
Java面试之Java Web
64\.JSP和servlet有什么区别?JSP是servlet技术的扩展,本质上就是servlet的简易方式。servlet和JSP最主要的不同点在于,servlet的应用逻辑是在Java文件中,并且完全从表示层中的html里分离开来,而JSP的情况是Java和html可以组合成一个扩展名为JS
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
JSP运行原理和九大隐式对象
一、JSP的原理:JSP文件会在服务器端的JSP引擎作用下转化为一个Servlet类的Java源代码文件。紧接着,这个Servlet类会在Java编译器的作用下被编译成一个class文件,并装载到jvm解释执行。剩下的就等同于Servlet的处理过程了。由于JSP第一次访问时会翻译成servle
Wesley13 Wesley13
3年前
Java反射技术概述
1.什么是Java反射?  就是正在运行,动态获取这个类的所有信息2.反射机制的作用  a.反编译:.class.java  b.通过反射机制,访问Java对象的属性,方法,构造方法等3.反射机制的应用场景  Jdbc加载驱动  SpringIOC实现  Java框架4.创建对象的两种方式  a.直
Stella981 Stella981
3年前
Introduction of Servlet Filter(介绍javaweb组件之一过滤器filter)
javaweb的三大组件都需要交给web服务器运行,都需要在web.xml文件中配置。①Servlet:javax.servlet.Servlet通过http协议接受客户端的请求,并作出响应的Java应用程序②Filter过滤器:javax.servlet.Filter是一个接口,实现请求的拦截和放行,并可添加新功能,达到过滤请求的作用③list