经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
java_servlet
来源:cnblogs  作者:脱离低级趣味的菜鸟  时间:2018/11/2 9:19:29  对本文有异议

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文件中配置

     <servlet>
             <servlet-name>LifeServletTest</servlet-name>
             <servlet-class>全限定名(eg:com.sun.Servlet)</servlet-class>
             <load-on-startup>1</load-on-startup>
       </servlet>

    <load-on-startup>中的数字 越小表示当服务器启动时就越先被创建

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

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

  get方式:(数据拼接在url请求后,格式为:资源名?name=sss&passwd=111&age=22)
           a.浏览器中输入地址(URL)然后回车
           b.超链接
           c.页面中引入的css样式文件
           d.页面中引入的js的文件(javascript)
           e.<img src="image/a.jpg" />
           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
         例如:
         <Connector  connectionTimeout="20000" port="8002" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="GBK"/>

  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);//一般不用

  

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

10.前端如何找到Servlet

  a.在web.xml中写配置

    <servlet>

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

      <servlet-class></servlet-class>

    </servlet>

    <servlet-mapping>

      <servlet-name>跟上边一样<servlet-name>

      <url-pattern>/资源名(前端通过这个名找到后端哒)</url-pattern>

    </servlet-mapping>

  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(监听器)

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号