Java Web 基础笔记(3)

五 ---------------------------------JavaBean----------------------------------------------------------------------
    如果要在JSP中应用JSP提供的JavaBean标签来操作简单类,则类必须满足:
        所有的类必须放在包中
        所有的类必须声明为public
        类中属性必须封装
        至少含有一个无参构造
    jsp中使用JavaBean:
       

<%@ page contentType="text/html" pageEncoding="GBK"%>
        <%@ page import="cn.mldn.lxh.demo.*"%>
        <html>
        <head><title></title></head>
        <body>
        <%
            SimpleBean simple = new SimpleBean() ;
            simple.setName("qwe") ;
            simple.setAge(30) ;
        %>
        <h3>姓名:<%=simple.getName()%></h3>
        <h3>年龄:<%=simple.getAge()%></h3>
        </body>
        </html>

    或使用<jsp:useBean>指令
       

 <%@ page contentType="text/html" pageEncoding="GBK"%>
        <jsp:useBean id="simple" scope="page" class="cn.mldn.lxh.demo.SimpleBean"/>
        <html>
        <head><title></title></head>
        <body>
        <%
            simple.setName("qwe") ;
            simple.setAge(30) ;
        %>
        <h3>姓名:<%=simple.getName()%></h3>
        <h3>年龄:<%=simple.getAge()%></h3>
        </body>
        </html>

六 -------------------------------------文件上传------------------------------------------------------
 七 -------------------------------------Servlet程序开发-----------------------------------------------
    Servlet程序是Java对CGI程序的实现,相较于传统的CGI程序的多进程处理不同的是,Servlet采用多线程处理方式,效率更高
    如果想要编写一个用于Http的Servlet则必须要继承HttpServlet类而且至少要覆写doGet()方法
    同时需要在web.xml文件进行配置
       

<servlet>
            <servlet-name>login</servlet-name>
            <servlet-class>
                com.hsd.mvcdome.servlet.LoginServlet
            </servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>login</servlet-name>
            <url-pattern>/LoginServlet</url-pattern>
        </servlet-mapping>


    每个servlet可以配置多个名称,只要增加对应的servlet-mapping即可
 1 -------------------------------servlet生命周期------------------------------------------------------------
    生命周期包括加载程序,初始化,服务,销毁,卸载等五个部分
    对应方法:
        public void init() throws ServletException     初始化时调用
        public void init(ServletConfig config) throws ServletException    重载方法,可以通过config读取配置信息
        public abstract void service(ServletRequest req,ServletResponse resp) throws ServletException IOException   一般不会覆写此方法
        public void destory()  servlet销毁时调用
    当web容器启动或第一次使用整个Servlet时会进行加载和初始化,默认情况下是在第一次使用时调用初始化方法,也可以通过
    配置web.xml在容器启动时自动为servlet初始化,直接配置启动选项即可。
       

<servlet>
            <servlet-name>login</servlet-name>
            <servlet-class>
                 com.hsd.mvcdome.servlet.LoginServlet
            </servlet-class>
            <load-on-startup>1</rload-on-startup>
        </servlet>


 2 --------------------------取得初始化配置信息-----------------------------------------------------------------
    config可以对象可以取得配置信息,在
        public void init(ServletConfig config) throws ServletException    重载方法,可以通过config读取配置信息
    有所体现,使用的方法见config对象
 3 -------------------------取得其他的内置对象-------------------------------------------------------------------
    在Servlet中想要获得一个Session对象,可以通过HttpServletRequest接口完成,此接口提供方法:
        public HttpSession getSession()    返回当前session
        public Httpsession getSession(boolean create)    返回当前session对象,没有则创建一个
    取得ServletContext实例
        通过GenericServlet类提供的方法
            public ServletContext getServletContext()   取得ServletContext对象

4 ----------------------servlet跳转---------------------------------------------------------------------------
    客户端跳转: 直接使用HttpServletResponse的sendRedirect()方法即可。
    服务器端跳转: 需要使用RequestDispatcher接口完成
        public void forward(ServletRequest req,ServletResponse resp) throws ServletException,IOException
        public void include(ServletRequest req,ServletResponse resp) throws ServletException,IOException
    想要使用RequestDispatcher则需要使用ServletRequest接口提供的getRequestDispatcher()方法
        public RequestDispatcher getRequestDispatcher(String path)  取得RequestDispatcher实例
 5 -------------------------过滤器--------------------------------------------------------------------------------        
    从使用上看Servlet可以分为三类:简单Servlet,过滤器,监听器
    在Servlet中,想要定义一个过滤器则直接让一个类实现javax.servlet.Filter接口,此接口定义了三个方法:
        public void init(FilterConfig config)   过滤器初始化(容器启动时初始化)时调用,可以通过config获取配置信息
        public void doFilter(ServletRequest req,ServletResponse resp,FilterChain chain) 完成具体的过滤操作,并通过chain向下传递
        public void destory()   过滤器销毁时调用
    FilterChain接口中包含doFilter方法:
        public void doFilter(ServletRequest req,ServletResponse resp) 将请求向下传递
 6  -------------------------监听器-------------------------------------------------------------------------------
    监听web的各种操作,当相关的事件触发后产生事件,并对事件进行处理,web中可以对application,session,request进行监听
        xml中配置
            <listener>
                <listener-class>
                    包名.类名
                </listener-class>
            </listener>
    ----------------------------------对application进行监听--------------------------------------------------------
    对application进行监听实际上就是对ServletContext进行监听,主要使用ServletContextListenter和ServletContextAttributeListenter两个接口
    上下文状态监听使用ServletContextListenter接口,常用方法:
            public void contextInitialized(ServletContextEvent sce)    容器启动时触发
            public void contextDestory(ServletContextEvent sce)        容器销毁时触发
        触发定义的事件时通过ServletContextEvent进行事件处理
            public ServletContext getServletContext()         取得ServletContext对象
    上下文属性监听使用ServletContextAttributeListenter接口,常用方法:
            public void attributeAdded(ServletContextAttributeEvent scab)   增加属性时触发
            public void attributeRemoveed(ServletContextAttributeEvent scab)   移除属性时触发
            public void attributeReplaced(ServletContextAttributeEvent scab)   替换属性时触发
        触发定义的事件时通过ServletContextAttributeEvent进行事件处理
            public String getName()                 取得设置的属性名称
            public Object getValue()                取得设置的属性名称

----------------------------------对session进行监听---------------------------------------------------------
    对session的监听主要使用HttpSessionListener,HttpSessionAttributeListener和HttpSessionBindingListener接口进行
    session状态监听HttpSessionListener接口
            public void sessionCreated(HttpSessionEvent se)     session创建时调用
            public void sessionDestoyred(HttpSessionEvent se)     session销毁时调用
        触发定义的事件时产生HttpSessionEvent事件
            public HttpSession getSession()      取得当前session
    session失效包括两种情况:调用session的invalidate方法或在web.xml中配置失效时间
    session属性监听HttpSessionAttributeListener接口
            public void attributeAdded(HttpSessionBindingEvent se)   增加属性时触发
            public void attributeRemoveed(HttpSessionBindingEvent se)   移除属性时触发
            public void attributeReplaced(HttpSessionBindingEvent se)   替换属性时触发
        HttpSessionBindingEvent事件定义的方法:
            public HttpSession getSession()   取得当前session
            public String getName()    取得属性名称
            public Object getValue()   取得属性内容
     session属性监听HttpSessionBindingListener接口,不需要进行xml配置
        public void valueBound(HttpSessionBindingEvevt evevt)    绑定对象到session时触发
        public void valueUnbound(HttpSessionBindingEvevt evevt)    从session移除对象时触发
           

 //绑定
            <%@ page contentType="text/html" pageEncoding="GBK"%>
            <%@ page import="org.lxh.listenerdemo.*"%>
            <html>
            <head><title></title></head>
            <body>
            <%
                LoginUser user = new LoginUser("wer") ;
                session.setAttribute("info",user) ;    // 直接保存LoginUser对象
            %>
            </body>
            </html>

----------------------------------对request监听------------------------------------------------------------
    对于request的监听主要使用ServletRequestListener和ServletRequestAttributeListener两个接口
    request请求状态监听ServletRequestListener接口
        public void requestInitialized(ServletRequestEvent sre)     请求开始时调用
        public void requestDestoryed(ServletRequestEvent sre)       请求结束时调用
    触发定义的事件时产生ServletRequestEvent事件
        public ServletRequest getServletRequest()     取得ServletRequest对象
        public ServletContext getServletContext()     取得ServletContext对象
    request属性监听ServletRequestAttriuteListener接口
        public void attributeAdded(ServletRequestAttributeEvent srae)      增加属性时触发
        public void attributeRemoveed(ServletRequestAttributeEvent srae)   移除属性时触发
        public void attributeReplaced(ServletRequestAttributeEvent srae)   替换属性时触发
    触发定义的事件时产生ServletRequestAttributeEvent事件
        public String getName()    取得设置的属性名称
        public Object getValue()   取得设置的属性内容

猜你喜欢

转载自blog.csdn.net/qq_39156722/article/details/93405381