zoukankan      html  css  js  c++  java
  • javaweb技术入门

    JavaWeb巩固和进阶

    1.如何配置外部应用?

    方法一:

    server.xml

    <Host>中添加如下配置

    <Context path="/xxx" docBase="F:/hello1"/>

    path:     项目的名称,给项目起的别名

    docBase:  指定项目的真实存放路径

    访问:http://localhost:8080/xxx/index.html

    方法二:

    /conf/catalina/localhost/目录下创建xml文件,命名为yyy.xml

    catalinalocalhost目录如果tomcat自身没有的话,就主动去创建。

    在文件中添加如下内容

    <Context docBase="F:/hello1"/>

    访问:http://localhost:8080/yyy/index.html

    2.如何在访问时不用输入主页面?

    在项目的web.xml文件中进行如下的配置,输入如下代码:

    <welcome-file-list>

            <welcome-file>index.html</welcome-file>

            <welcome-file>index.htm</welcome-file>

            <welcome-file>index.jsp</welcome-file>

    </welcome-file-list>

    3.修改本机的映射?

    在本机的C:WINDOWSsystem32driversetc路径下的

    hosts文件中

    原来:127.0.0.1   localhost

    现在:127.0.0.1   www.baidu.com

    在本机上使用www.baidu.com就等同于使用127.0.0.1

    4.如何配置一个虚拟主机?

    server.xml中配置如下:

    <Host name="abc"  appBase="F:/myProject"

           unpackWARs="true" autoDeploy="true"

           xmlValidation="false" xmlNamespaceAware="false">

          </Host>

    name 也必须在

    C:WINDOWSsystem32driversetc

    hosts文件中   进行配置

    5.javaweb的三大组件?

      servlet  

      Filter   (过滤器)

      listener(监听器)

    6.servlet 负责的工作?

    客户端发出一个请求给服务器,服务器通过web.xml配置文件找到相应的servle处理请求,servlet至少和一个url绑定在一起

    通过访问url,来访问servlet

    执行servlet时,实际是依靠requeseresponse请求

    7.如何实现servlet?

    实现javax.servlet.Servlet接口

    继承javax.servlet.GenericServlet抽象类

    继承javax.servlet.http.HttpServlet抽象类

    8.servlet接口中的方法?

    //和生命周期相关,前三个

    void init(ServletConfig)       //第一个执行,只执行一次

    void service(ServletRequest request,ServletResponse response)//被调用多次

    void destroy();              //销毁的方法,只执行一次

    String getServletInfo();        //得到和servlet效果的信息

    ServletConfig getServletConfig(); //得到servlet的配置信息

    9.web.xml如何去配置servlet(实际上,在创建servlet时,编译器自动生成

    <?xml version="1.0" encoding="UTF-8"?>

    <web-app version="2.5"

    xmlns="http://java.sun.com/xml/ns/javaee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

         <servlet>

         <servlet-name>aaa</servlet-name>

         <servlet-class>servlet.AServlet</servlet-class>    

         //servlet是放在包名的下面

         </servlet>

         <servlet-mapping>

         <servlet-name>aaa</servlet-name>

         <url-pattern>/a_servlet</url-pattern>

         //注意这里可以有多个url-pattern和一个servlet去进行对应,是以/开头

         </servlet-mapping>     

    </web-app>

    两对如下:

    <servlet></servlet>

    <servlet-mapping></servlet-mapping>

    10.注意各个方法?

    String getServletName()            //返回<servlet-name>的值

    ServletContext getServletContext();   //获取servletContext对象

    String getInitParameters();          //返回servlet的初始化参数

    Enumeration getInitParameterNames();//返回所有的初始化的参数的名称

    11.Servlet三大域对象?

    ServletContext

    ServletRequest

    HttpSession

    12.GenericServlet

    直接使用this.getInitparater(),     //获取初始化参数

    直接使用this.setServletContext(),  //获取ServletContext参数

    注意:如果需要做初始化参数,不能去覆盖init(ServletConfig) ,而是去覆盖GenericServlet自己提交的init()方法

    13.HTTPServlet,是专注与http请求的servlet

    不用再覆盖service()方法

    public void service(HttpServletRequest request,HttpServletResponse response){

          string method = request.getMethod();//获取请求方式

    }

    public void doGet(HttpServletRequest request,HttpServletResponse response){

        //向客户端响应405状态码

    }

    public void doPost(HttpServletRequest request,HttpServletResponse response){

        //向客户端响应405状态码

    }

    doGet()   doPost()都不是抽象方法

    htttpservlet中只能去覆盖doGet()   doPost()方法,不可以去覆盖service()方法!

    14.servlet是单例,是线程不安全的。

    <load-on-startup>:指定当前servlet在服务器启动时就去创建实例

    如果有多个启动被创建了实例

    就用<load-on-startup>1</load-on-startup>

    <load-on-startup>2</load-on-startup>

    <load-on-startup>3</load-on-startup>

    控制实例启动的顺序

    15.域对象之一的:ServletContext?

    是只有一个实例的对象,一个web应用只有一个servletContext对象

    在服务器启动时创建,在服务器关闭时销毁,相当于一个全局的变量,常驻内存

    域功能:内部有map,可以存放数据

    servletContext.setAttribute(“name”,”zhangsan”);   //保存名称为name的数据

    String name = (String)GetAttribute(“name”);

    Enumeration e = servletContext.getAttributenames();//获取域中的所有的属性名称

    可以在应用数据中使用任何动态的资源共享。

    访问当前web应用的资源

    String getRealPath(String path):                 //获取指定资源的的真实路径

    InputStream in = servletContext.getResourceAsStream(“/a.txt”);//获取资源对应的输入流

    //获取指定目录下的所有的资源路径

    Set set = Context.getResourcesPaths(“/WEB-INF”);

    如何得到servletContext域对象呢?

    servletConfig得到

    ServletContext context = servletConfig.getServletContext();

    Response设置编码方式:

    1)    setContentType(“text/html;charset=utf-8”)

    2)    setHeader(“Content-type”,”“text/html;charset=utf-8””);

    16.response作用?

    设置响应头信息

    设置状态码

    响应正文

    重定向

    响应流包括:字符流 + 字节流

    PrintWriter out = response.getWriter();//获取字符流

    但凡,在调用getWriter方法,使用setCharacterEncoding()设置字符流的编码,否则默认是iso-8859-1

    但是,在实际使用时:setContentType(“text/html;charset=utf-8”);

    一方面,设置编码方式为utf-8;浏览器解析时,也按照这种方式进行解析

    ServletOutputstream out = response.getOutputStream();   //获取字节流

    只能调用其中的一个方法!

    17.设置状态码?

    response.setStatus(404);

    response.sendRrror(404,”自己设置错误信息”);

    18.重定向:response.setContentType("text/html;charset=utf-8");

    //设置响应状态码302,在这里是必须的!

    //响应头重定向到index页面,在新的指向前加“/

    response.setStatus(302);

    response.setHeader("Location","/test/index.jsp");

    19.自动重定向:

    response.sendRedirect(“test/index.jsp”);

    在重定向时,不可以既要输出到客户端又想去输出!!!

    20.http是无状态的协议,每次都是新的!

    21.request的功能:

    分装了请求的数据

    分装了请求的正文数据,如果是get请求,就没有正文数据

    是一个域对象,可以把它当成map来添加数据

    request提供请求转发和请求包含。

    22如何区别请求转发和重定向?

    给张三打电话,解决问题!

    23.request作为一个域对象如何在一个请求内共享数据?

    域相关的方法:

    void setAttribute(String name,Object value);//设置请求的属性名和对应的值

    object getAttribute(string name);            //调用时强制类型转换

    void removeAttribute(String name);           //移除某个属性

    enumration getAttributeNames();              //得到属性名称

    24.域属性的特性:

    服务器端自己设置

    服务器端自己获取

    实际,往往是一个servlet设置,另外一个servlet来获取

    自己设置,自己获取没意义!

    25.

    request获取请求头?

    request.getHeader(“User-Agent”);//得到客户端浏览器的配置信息

    26.表单参数,超链接参数?

    Post处理编码问题:

    request.setCharactorEncoding(“utf-8”);

    Request.setContentType(“text/html;chartset=utf-8”);

    get处理编码问题:

    //获取请求参数

    String username = request.getParameter(“username”);

    //回退到iso-8859-1

    Byte[] b1=username.getBytes(“iso-8859-1”);//回退

    //String的构造函数,进行重解

    username= new String(b1,”utf-8”);//重解

    public void doGet(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

        //get user name and password parameters

                 String username=request.getParameter("username");

                 String password=request.getParameter("password");

                 //back to and renew character encode

                 username = new String (username.getBytes("iso-8859-1"),"utf-8");

                 password = new String (password.getBytes("iso-8859-1"),"utf-8");

                 //output to the client type

                 response.setContentType("text/html;charset=utf-8");

             response.getWriter().print("名字:"+username+"密码:"+password);

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

     // as for post method set the

             response.setCharacterEncoding("utf-8");

     String username=request.getParameter("username");

             String password=request.getParameter("password");

             response.setContentType("text/html;charset=utf-8");

             response.getWriter().print("名字:"+username+"密码:"+password);

    }

    27.Request其他方法?具体查阅api

    String getMethod();//获取请求方法  get/post方法

    String getContextPath();  //获取当前应用的路径

    String getQueryString(); //获取参数列表  username=abc&password=123;

    String getRequestUr();//获取请求url

    Strinf getRemoteAddr();获取客户端的ip地址

    28.都是在一个请求中跨越多个servlet

    请求转发:Aservlet转发到bservlet中,那么这个请求转发到bservlet处理,aservlet就不用插手。

    重定向:俩个请求

    请求包含:Aservlet 包含bservlet,这两个servlet共同处理,共同协作。

    29.请求转发的实现代码:

    requestDispatcher  rd = request.getRequestDispatcher(“/Bservlet”);

    rd.forward(requese,response);//请求转发,传递给下一个servlet一个requeseresponse

    30.会话:打开第一个页面,直到把该浏览器关闭。

    带着热忱学技术,带着耐心做技术,带着分享去交流,带着微笑探我们的程序人生!
  • 相关阅读:
    LOJ.6281.数列分块入门5(分块 区间开方)
    HDU.3571.N-dimensional Sphere(高斯消元 模线性方程组)
    POJ.2891.Strange Way to Express Integers(扩展CRT)
    Codeforces.100633J.Ceizenpok's formula(扩展Lucas)
    Some Formulas.
    洛谷.3807.[模板]卢卡斯定理(Lucas)
    CODEVS.3990.中国余数定理2(CRT)
    BZOJ.3667.Rabin-Miller算法(MillerRabin PollardRho)
    洛谷.1919.[模板]A*B Problem升级版(FFT)
    POJ.2065.SETI(高斯消元 模线性方程组)
  • 原文地址:https://www.cnblogs.com/jiaqingshareing/p/5427751.html
Copyright © 2011-2022 走看看