栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Servlet技术栈要点

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Servlet技术栈要点

上次说道tomcat就是一个成品web服务器,他的底层应该是用socket接口实现了连接,然后绑定网址监听,然后又读取数据.

再看tomcat的体会_数字公民某杨的博客-CSDN博客

然后又把数据包装成request对象以及response对象

这让tomcat看上去更像一台机器,里面装什么具体内容由开发者来决定.也像一个饭店,卖什么风格的菜由开饭店的人来决定.

具体什么菜,其实就是你开发什么样的servlet.

作为一个web应用来说,有很多sevletjsp等等的材料,其中servlet是核心的服务内容体现.

当一个开发者开发了很多servlet,要安装到tomcat中,首先需要编译成class文件,然后把这些文件放到webapps文件夹.这样启动tomcat的时候,这些servlet才会投入使用.

这有点像c语言中程序的运行.很多时候运行的程序不仅仅包括你刚写的代码,也包括系统中已经有二进制格式的程序,例如printf函数,c语言中把这个叫做链接.应该说所有程序应该都叫链接,有这么一步.

所以把servlet的class文件放在webapps,就好像c语言中的链接一样.

在c语言中是有个命令叫做link ,那么在tomcat中,servlet代码与tomcat容器的"link"接口,就是告诉tomcat,这里有servlet,方式是两种,一个是在web.xml文件中写上servlet标签(servlet class ,mapping),或者用注解方式,在servlet的类上面加上@Webservlet.

每个servlet都有个ServletConfig对象,在这个对象里面可以配置一些要求tomcat对servlet采取一些预先的配置措施,例如启动顺序,loadonstartup,initpm等等.

//获取ServletConfig
        ServletConfig servletConfig = this.getServletConfig();
        String value1 = servletConfig.getInitParameter("key1");
        String value2 = servletConfig.getInitParameter("key2");
        System.out.println(value1);
        System.out.println(value2);

除了servletconfig对象,还有对每个web应用(所有servletjsp,listener等等)都有个ServetContext,这是一个全局唯一的配置.可以对所有servlet作一些统一的配置.

@WebServlet("/attr.do")
public class ServletContextAttrServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext servletContext = this.getServletContext();
        servletContext.setAttribute("key","BJ");
        servletContext.setAttribute("key","IT");
        servletContext.removeAttribute("key");
    }
}

filter,过滤器,在请求到达servlet之前可以预先作一些处理和筛选(例如判断是否登陆),设置一些请求的中文编码格式的等等.filter像servlet一样可以在web.xml中作配置,或者用@WebFilter方式。

@WebFilter("/*")
public class AnnotationFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println(" Annotation Filter....");
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {

    }
}

Listener对象,可以实现对ServletContext, HttpRequest, 还有HttpSession三个对象的监听。这三个对象的产生、修改、销毁等变化,都可以根据需要获取有关信息。

public class HttpServletRequestLifecycleListener implements ServletRequestListener {

    @Override
    public void requestDestroyed(ServletRequestEvent sre) {
        System.out.println("----------Start requestDestroyed------------");
        System.out.println((HttpServletRequest)sre.getServletRequest());
        System.out.println("----------End requestDestroyed------------");

    }

    @Override
    public void requestInitialized(ServletRequestEvent sre) {
        System.out.println("----------Start Initialized------------");
        System.out.println((HttpServletRequest)sre.getServletRequest());
        System.out.println("----------End Initialized------------");
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1033139.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号