Servlet了解

Servlet了解
1 Servlet介绍

Servlet用于接收及响应前端发送的请求,可以在同一个Servlet中处理多个请求,也可以定义返回的数据类型。

Servlet和JSP之间的关系

先有的Servlet再有JSP,JSP文件执行需要先翻译成java文件(servlet),然后再进行编译成class文件,最后执行

查找路径:eclipse中配置本地的Tomcat,项目启动运行后,在Tomcat的work中查找

2 Servlet入门案例

需求:定义Servlet接收前端发送的登录请求,对请求进行处理

<form action="loginServlet" method="post">
  <input type="text" name="uname">
  <input type="submit" value="提交">
</form>
//自定义的Servlet要继承HttpServlet
public class LoginServlet extends HttpServlet {
    /**
     * Servlet中提供了service方法用于接收及响应web客户端的请求
     * service可以执行多次(每次请求都会执行该方法)
     * super.service(req, resp);用于请求分发
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("------service------");
        //设置编码
        request.setCharacterEncoding("utf-8");
        //获取请求中的参数
        String uname = request.getParameter("uname");
        if(uname.equals("admin")){
            //重定向
            response.sendRedirect("success.jsp");
        } else{
            response.sendRedirect("fail.jsp");
        }
    }
}

servlet配置

<!--
        配置Servlet,指定请求地址与Servlet之间的对应关系
        servlet-name:给Servlet指定一个唯一标识
        servlet-class:指定servlet所在的位置
-->
<servlet>
  <servlet-name>LoginServlet</servlet-name>
  <servlet-class>cn.yunhe.servlet.LoginServlet</servlet-class>
</servlet>
<!--
        给指定的Servlet配置请求路径
            servlet-name:指定该路径要关联的servlet
            url-pattern:指定请求地址(特别注意必须给/[web项目的根目录])
    -->
<servlet-mapping>
  <servlet-name>LoginServlet</servlet-name>
  <url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
3 Servlet生命周期

Servlet的生命周期依赖于web容器的生命周期,生命周期划分为:初始化(一次)、执行(多次)、销毁(一次)。

public LifeCycleServlet(){
  System.out.println("-----LifeCycleServlet构造器执行-------");
}
@Override
public void init() throws ServletException {
  System.out.println("------LifeCycleServlet 初始化执行--------");
  super.init();
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  System.out.println("------LifeCycleServlet service执行--------");
}
@Override
public void destroy() {
  System.out.println("------LifeCycleServlet destroy执行--------");
  super.destroy();
}

默认Servlet的初始化是在web客户端发送对应的请求到Servlet的时候,才会被初始化(不用就不初始化)

4 Servlet配置
4.1 加载顺序

配置Servlet加载顺序(默认是使用的时候才初始化),需要在配置Servlet的时候去指定load-on-startup标签

<servlet>
  <servlet-name>LifeCycleServlet</servlet-name>
  <servlet-class>cn.yunhe.servlet.LifeCycleServlet</servlet-class>
  <!--设置Servlet在web容器初始化的时候也进行初始化-->
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>LifeCycleServlet</servlet-name>
  <url-pattern>/lifeCycleServlet</url-pattern>
</servlet-mapping>

初始化顺序:值越大越靠后加载,值一样按照在xml文件中的配置顺序,靠后的先加载,如果不写该标签,只有在第一次请求的时候才会初始化

4.2 全局参数与局部参数

局部参数只在对应的Servlet中使用,全局参数是在所有的Servlet中都可以使用

<!--配置Servlet-->
<servlet>
  <servlet-name>paramServlet</servlet-name>
  <servlet-class>cn.yunhe.servlet.ParamServlet</servlet-class>
  <!--设置局部参数-->
  <init-param>
    <param-name>count</param-name>
    <param-value>1</param-value>
  </init-param>
</servlet>

获取结果

//获取局部变量参数
String count = getInitParameter("count");
System.out.println("ParamServlet count="+count);

全局变量配置

<!--Servlet的全局变量-->
<context-param>
  <param-name>name</param-name>
  <param-value>application</param-value>
</context-param>
 //获取全局变量(需要获取到上下文对象)
ServletContext servletContext = getServletContext();
String value = servletContext.getInitParameter("name");
System.out.println("ApplicationParamServlet name="+value);
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值