首页 > 代码库 > web学习笔记

web学习笔记

 
 tomcat
 bin
    startup启动服务器
    shutdown关闭服务器
 conf(配置文件夹)
    server.xml
        服务器配置文件(端口号)
    web.xml
 lib(架包)
 logs(日志)
 temp(临时文件)
 webapps(写好的代码,部署的项目)
 work(放jsp)
 servlet(java代码) )
 javac -d . -cp servlet-api.jar FirstServlet.java
 
 手动部署
    1.文件夹下新建WEB-INF,下建立classes(放java字节码文件)和lib(jar包)文件将配置好的web.xml放到web-inf    文件夹下
    2.将上述文件放到tomcat下的webapps文件夹下
    3.http://ip:port/项目名/资源名
        http://127.0.0.1:8181/tylg_servlet/FirstServlet
重新部署
    
    servlet
         实现servlet接口
            <servlet>
                <servlet-name>firstservlt</servlet-name>//用来匹配servlet—mapping
                <servlet-class>com.briup.web.servlet.FirstServlet</servlet-class>java类的包名加类名
            </servlet>
            <servlet-mapping>
                <servlet-name>firstservlt</servlet-name>//用来匹配servlet
                <url-pattern>/firstServlet</url-pattern>//资源路径
            </servlet-mapping>
                响应过程
                    http://ip:port/项目名/资源名
                    http://127.0.0.1:8181/tylg_servlet/FirstServlet
                        服务器得到get请求,通过ip和端口号找到tomcat,在tomcat中找到webapps,如果是页面,直接访问如果是java在web-inf中找到web.xml。在xml里通过路径的资源名和url-pattern匹配找到servlet-mapping,在servlet-mapping中通过servlet-name匹配servlet标签,通过servlet-class找到对应的java运行文件
         继承Genericservlet
            实现service方法(自动调用)
            http://127.0.0.1:8181/tylg_servlet/SecondServlet
         继承HttpServlet
            service(HttpServlet req,HttpServletResponse resp)仅拦截http协议的请求
            service(ServletRequest arg0, ServletResponse arg1)所有请求都会拦截
            init(初始化)destroy(消亡)
        第一次访问的时候创建对象(init方法)(tomcat的service容器)并调用servlet方法,第二次再发请求时不创建新对象,使用第一次启动的时创建的对象,调用servlet方法(单例模式)当服务器停掉的时候调用destro有方法回收对象
        在web.xml里的servlet标签加<load-on-startup>1</load-on-startup>可以设置是否在服务器启动时创建对象
            数字越接近0越早创建,负数则不创建
    单例模式
        class Test{//懒汉模式判断是否存在,不存在创建新对象
            private Test test;
            private Test(){}
            public Test getTest(){
            
            if(test!=null){
            test=new Test();
            }
            return test;
            }
        }
        class Test{//饿汉模式先创建对象
            private Test test=new Test();
            private Test(){}
            public Test getTest(){
        
            return test;
            }
        }
    webcontent下方html页面
 天生多线程,线程不安全
  为服务器设置重新加载servers -》context.xml-》<context reloadable="true">
  get/post传参方式(key=value)
  get(将参数用地址的方式传递)getParameter
    不安全,有长度限制
    doGet
    超链接,form表单,ajax
    http://127.0.0.1:8181/tylg_servlet/param.html
   当发一个请求,资源存在,将请求封装成httprequest对象(web服务器)作为参数发送给service方法
    http://127.0.0.1:8181/tylg_servlet/param.html
    http://127.0.0.1:8181/tylg_servlet/ParamServlet?name=zhang3&age=10
  post参数在请求头
  form表单methed属性设置为post
  doPost只接受post传参
  解决乱码
    server.xml 修改端口号的地方URIEncoding="编码方式"
    req.setCharacterEncoding("UTF-8");
    resp.setContentType("text/html;charset=utf-8");设置内容类型
    发送请求的方式(五种)
    http://127.0.0.1:8181/tylg_servlet/register.html
    
    跳转:
        服务器内部跳转
            RequestDispatcher rdis=req.getRequestDispatcher("error.html");
            rdis.forward(req, resp);//传递请求
                forward仅跳转
            req.getRequestDispatcher("success.html").include(req, resp);
                include将其他的东西包含进页面一起显示
            浏览器请求(form的active)-》1.java(req.getRequestDispatcher("2").include(req, resp);)->web.xml->2.java->浏览器
        一个请求一个回应
            浏览器发一个请求,请求在服务器内传递(向下转发),完成后向浏览器发一个响应
        
        客户端重定向
            新的请求
            resp.sendRedirect("error.html");
    路径问题
        相对路径
        ./回到上一级目录
        ../回到上两级目录
        绝对路径
        /
    范围
    application  page
        ServletContext app=    session.getServletContext();
    session    
        HttpSession session =req.getSession();
        session会话(每个浏览器jsessionid标识)保存在服务器端的一个对象,客户端没有,浏览器以Cookie的形式将jsessionid发送到服务器,以验证会话的一致性
        在web配置
        <session-config>
                <session-timeout>1</session-timeout>
        </session-config>
        修改会话保存时间
        cookie(自动登陆)会话追踪客户端(本地文件)和服务器端(java对象)都有
    request
         url重写
            将JsessionId以post或get方式发给服务器
        
    过滤器
    implements Filter
    判定合法性
    <filter>
      <filter-name>firstfilter</filter-name>
      <filter-class>com.briup.web.filter.FirstFilterTest</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>firstfilter</filter-name>
      <url-pattern>/*(所有请求都会过滤)</url-pattern>地址中出现的路径才会被过滤器过滤
  </filter-mapping>
    监听器当事件触发时调用监听器
    <listener>
        <listener-class>com.briup.web.listener.SessionListener</listener-class>
    </listener>
 

web学习笔记