初识servlet

来源:互联网 发布:上海市网络作家协会 编辑:程序博客网 时间:2024/06/12 20:22

一servlet
1、什么是servlet?

本质就是一个java类,需要继承HttpServlet,一旦继承之后,javaEE一个组件就是servlet
作用可以接收客户端的请求,执行响应的方法,然后响应客户端

2、建好一个servlet,怎么访问servlet,怎么请求?

web程序访问任何页面和资源都是通过url地址来访问,servlet有url地址吗?

http://localhost:8080/项目名/url-partten

3、如果想访问servlet,必须得解决servlet地址里的一部分,url-partten,自己来配置 web.xml

1)
servlet的配置

注意:每次修改配置或者java类的内容,都需要重新启动服务器                                                      

2)eclipse在我们的servlet类名上面默认给生成了一个url-partten,可以直接使用,使用注解帮我们生成的注解的目的是简化程序员配置的操作

4、访问servlet有几种方式?

1)直接在浏览器的地址里输入servlet的访问url; Get方式
http://localhost:8080/项目名/firstServlet

2)超链接

  <a href="/项目名/url-parttn" >连接文本</a>

3)表单访问

    form method=get/postservlet里获取前台传过来的数据                                                                 request.getParameter(参数名)                                                                           表单元素的name值,返回的是表单元素的value值                          

4)js也可以提交

<script type="text/javascript">             function    check(){                var userName=document.form1.userName.value;             var pwd=document.getElementById("pwd").value;               if(userName.length<2){                      alert('用户名长度不能少于2位');                   }else   if(pwd.length<6){                   alert('密码长度不能少于6位');                    }else{                      //提交                        document.form1.submit();                    }               }           

二、servlet的具体功能

查询数据的请求→ servlet的功能(接收请求,处理请求,跳转到其他jsp页面)→ jsp页面(显示需要的数据)

1、接收请求里的数据:请求里的数据分成两类,一类叫做请求参数 ,另外一类叫做请求属性

1)请求参数:通过表单提交的表单元素的值,IE地址里 http://localhost:8080/项目名/url-partten?name=zhangsan$pwd=123;                          问号后面的数据也是请求参数,=前面的是参数名,后面的是参数值。表单元素的name是参数名,value是参数值。这类数据是服务器自动封装到request请求参数里的。2)请求属性是人为的调用相关方法,把数据封装到请求对象里                                                    获取的是请求参数的值:                                                                                                             A、request.getParameter("参数名");获取的是该参数值,返回的是字符串类型                                ,一个参数名对应一个值                                                                         B、requtst.getParameterValues("参数名");返回的是该name对应的所有的value,是一个字符串数组。获取一个参数名对应多个值,checkBox  select                                                 

2、servlet跳转到其他的目标资源(jsp或者servlet)

1)响应重定向:response.sendRedirect("Success.jsp");括号里的参数是目标资源相对于servlet的相对路径,servlet相当于在webcontent里特点:跳转的目标页面,会生成一个新请求,不会将当前的请求传递给下一个目标页面,所以当前请求里的数据不会被传递到目标页面里,也可以叫不带参数的转。IE地址会发生变化。Get方式请求,如果的是servlet,目标servlet用doGet来响应                        2) 请求转发:  request.getRequestDispatcher("Success.jsp").forward(request, response);                                                        特点: 跳转的时候,会将当前的请求转发给目标页面,当然请求里的参数一起被传入到目标页面,没有产生新的请求。也可以叫做带参数的转发   。IE地址不会发生变化。转发语句如果写在doPost方法里,以post方式请求下一个资源,如果资源是servlet,doPost方法响应。如果写在doGet方法里,以get方式请求下一个资源,资源如果是servlet,doGet方法响应。                                         

3、servlet的继承关系

自定义的servlet →HttpServlet    →GenericServlet→    servlet                                                                         ↘   ServletConfig       严格来讲,一个类实现Servlet接口,就已经满足它servlet                                                       自定义的servlet里有很多的方法可以进行覆盖:doGet  doPost  init():servlet对象被创建之后马上执行                   destroy():servlet对象被销毁之前执行                  

4、servlet 在配置文件里可以配置初始化参数,在servlet里的任何一个方法都可以获取该参数的值

1)怎么配置初始化参数                       <servlet>                                                         <servlet-name>second</servlet-name>                                                         <servlet-class>servlet.SecondServlet</servlet-class>                                                             <init-param>                                                             <param-name>dbURL</param-name>                                                              <param-value>jdbc:oracle:thin:@localhost:1521:orcl</param-value>                                                          </init-param>                                                         </servlet>                                                          <servlet-mapping>                                                         <servlet-name>second</servlet-name>                                                         <url-pattern>/second</url-pattern>                                                        </servlet-mapping>                                            2)servlet里怎么获取该参数的值                                                       String dbUrl=this.getInitParameter("dbURL");                                                      

5、servlet的生命周期(指的是servlet从被创建一直到被销毁的过程)

1、服务器启动之后,第一次访问servlet的时候,它被创建,构造方法先执行,马上执行init方法。

2、正常访问servlet请求→service方法 → (方法判断请求方式到底是get还是post)

3、服务器正常关闭,servlet对象被销毁,执行destroy方法

总结:servlet是多线程单实例的。

原创粉丝点击