zoukankan      html  css  js  c++  java
  • servlet、jsp

    作为一个电脑工作者就应该自己装配电脑,从而节省经济和提高开发效率。

    (一)Servlet

    java web 目录结构
      - WebContent
        - WEB-INF
          - classes
          - lib
          - web.xml
        - jsp 页面
        - html 页面
        - 图片 ...
        1) eclipse修改编译文件默认输出目录,设为classes<build path -->配置build path-->source>
        2)在tomcat的conf目录下依次创建 Catalina/localhost/test.xml<配置任意目录下的web应用程序>
          <Context
          Path="/wuyong"
          docBase="C:\Users\Administrator\workspace\test_3\WebContent"
          reloadable="true"/>
        !path名作为manager下的配置名
    使用eclipse开发java web项目
      1)项目视图模式选择:navigator;project explorer;package explorer
        window --> show view --> ?
      2) 新建Tomcat服务器:window --> preferences --> server --> runtime Environments
      3) 新建web项目:Dynamic Web Project
      4)定制new透视图<windows-->perspective-->customize perspective>
    Servlet的注册与运行
      1)servlet程序必须在web应用程序的web.xml中进行注册和映射其访问路径,才可以被servlet引擎加载和被外界访问
      2)一个<servlet>元素用于注册一个servlet,它包含两个主要子元素<servlet-name>、<servlet-class>.分别用于设置servlet的注册和完整类名
      3)一个<servlet-mapping>元素用于映射一个已注册的servlet的一个对外访问路径,它含有两个子元素:<servlet-name>和<url-pattern>,分别用于指定servlet的注册名称和 对外访问路径
      4)注意:一个servlet可以有多个映射
      5)url-pattern的三种参数形式:/-- ; /* ; *.--
    类HelloServlet实现Servlet的一个例子
      1)创建一个servlet接口实现类:public class HelloServlet implements Servlet
      2) 在web.xml中注册和映射这个servlet:
      <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.ants.service.HelloService</servlet-class>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/helloServlet</url-pattern>
      </servlet-mapping>

    Servlet接口的方法
        init(ServletConfig config)
        service(ServletRequest req,ServletResponse res)
        destory()
        getServletConfig()
        getServletInfo()
    Servlet的实现类<也是ServletConfig的实现类>
        CenericServlet<不常用>
        HttpServlet
    ServletConfig接口的方法
        getInitParameter(String name)
        getInitParameterNames()
        getServletContext()
        getServletName()
    ServletContext接口的常用方法:<当前Web应用大管家,可以获取Web应用各方面信息>
        getRealPath(String name):获取当前web应用某一个文件在服务器上的绝对路径,而不是部署前的路径
        getContextPath():获取当前web应用的名称
        getResourceAsStream(String path):获取当前web应用某一个文件对应的输入流
        setAttribute(String name,Object object)
        getAttribute(String name)

    ServletContext接口
    设置初始化参数:<全局的>
      <context-param>
        <param-name>driver</param-name>
        <param-value>com.mysql.jdbc.Driver</param-value>
      <context-param>
    设置servlet初始化参数:<局部的,servlet的load-on-startup之前>
      <init-param>
        <param-name>user</param-name>
        <param-value>root</param-value>
      </init-param>
      <init-param>
        <param-name>password</param-name>
        <param-value>123456</param-value>
      </init-param>
    get请求与post请求
      get请求数据以键值对的方式添加在地址栏,数据量与url地址容纳量有关,一般4kb-7kb
      post请求数据封装在form data,数据量无限制
    service()
      ServletRequest:封装了请求信息
      - 获取请求参数
        String getParameter(String name):根据请求参数名,返回一个参数值
        String getParameterValues(String name):根据请求参数名,返回参数对应的字符串数组
        Enumeration getParameterNames():返回参数对应的Enumeration对象
        Map getParameterMap():返回键值对 key-->参数名 value-->参数值,String类型

      - 请求转发:<getRequestDispatcher是ServletRequest中定义>

        ServletRequest.getRequestDispatcher(String path).forward(ServletRequest request,ServletResponse,response)

      HttpServlet实现类的doGet()中的对象:HttpServletRequest
      2)获取请求url:HttpServletRequset.getRequestURI()
      3)获取请求方式:HttpServletRequset.getMethod()
      4)获取请求的查询字符串:HttpServletRequset.getQueryString()
          若是get请求,返回?后的字符串
          若是post请求,返回 null
      5)获取Servlet的映射路径:HttpServletRequset.getServletPath()
      6)和attribute相关的几个方法
    ServletResponse:封装了响应信息
      1)*getWriter():返回PrintWriter 对象.调用该对象的print()方法,把print的参数打印到浏览器
      2)设置响应类型:response.setContentType("application/msword")
      3) void sendRedirect(String location):指定的重定向.(此方法为HttpServletResponse中定义)

    (二)JSP
    1、jsp的定义:全称Java Server Pages,java服务器页面。其根本是一个简化的servlet设计。
    2、jsp的九个隐含对象<没有声明就可以直接使用>
      request
      response
      pageContext
      session
      application
      config
      out
      page
      exception<特殊:前提是设置了page指令的属性-->isErrorPage="true">
    3、换行的2种方式
      ①   %>
          <br>
         <%
      ② out.print("<br>");
    4、作用域属性范围从小到大
      pageContext,request,session,application
    5、jsp语法
      1)静态html内容称
      2)jsp表达式 <%=表达式 %>:输出表达式的值,相当于out.print()
      3) 脚本片段,java代码中圈套html代码的 java代码片段,多个脚本片段可以相互进行访问
      4)jsp声明 <%! %>
      5) jsp注释 <%-- --%> html注释<!-- -->
    6、域对象的属性操作
    域对象:
      pageContext:属性的作用范围仅限于当前jsp页面
      request:属性的作用范围仅限于同一个请求
      session:属性的作用范围限于一次会话:浏览器打开直到关闭称之为一次会话<在此期间会话不失效>
      application:属性作用范围限于当前WEB应用.只要在一处设置属性,在其他各处的jsp或servlet都可 以获取,服务器关闭或重启消失
    7、请求转发与重定向<requestDispatcher、sendRedirect>
      servlet类的创建,可选择映射和方法
      请求转发与重定向:
      1)本质区别:请求的转发只发出一个请求,而重定向则发出了两次请求
      具体:
        ①请求转发:地址栏是初次发出请求的地址
            重定向:地址栏不再是初次发出的请求地址,地址栏为最后响应的那个地址
        ②请求转发:在最终的Servlet中,request对象和中转的request对象是同一个
            重定向:在最终的Servlet中,request对象和中转的request对象不是同一个对象
        ③请求转发:只能转发给当前WEB应用的资源
            重定向:可以重定向到任何资源
        ④请求转发:/ 代表的是当前 WEB 应用的根目录
            重定向:/ 代表的是当前 WEB 站点的根目录
    8、jsp 2.0的三种指令page,include,taglib
      page指令:
        1)全局任意位置都全局有效,建议放在起始位置
        2)page指令的 常用 属性:
          ①import属性:指定当前jsp页面对应的Servlet要导入的类
          <%@ page import="com.ants.test.Test"%>
          ②session属性:取值为true 或false,指定当前页面的session隐藏变量是否可用
          <%@ page session="false"%>
          ③errorPage 和 isErrorPage
          > errorPage 指定若当前页面出错实际响应的页面,/ 代表当前 WEB 应用根目录,请求方 式是 请求转发
          <%@ page errorPage="/error.jsp"%>
          > isErrorPage 指定当前页面是否为错误处理页面,属性值为 true 则可以使用隐含对象 exception,不建议能够直接访问该页面,属性值默认为
          false
          > WEB-INF下的文件为隐私文件不能通过url直接访问,但可以通过请求转发访问
          <%@ page errorPage="/WEB-INF/error.jsp"%>
          ④contentType属性:指定当前页面的响应类型,实际调用的是response.setContentType ("text/html;charset=UTF-8")
          ⑤pageEncoding属性:指定当前jsp页面的字符编码.通常和contentType中的charset一致
          ⑥isELIgnored属性:指定当前页面是否可以使用EL表达式,通常取值为true
      include指令:将其他文件静态引入servlet源文件中,其中file属性用于指定被引用文件的相对路径,若以/
        开头则是 WEB 应用的根目录
        <%@ include file="registerURL"%>
    9、jsp标签
      标签名以小写jsp作为前缀,如<jsp:include>、<jsp:forward>
      <jsp:include> 将其他文件资源 动态引入,生成2个servlet源文件
        <jsp:include page="b.jsp"></jsp:include>
      <jsp:forward>
        <jsp:forward page="/include/b.jsp"></jsp:forward>
    10、中文乱码问题
      1)jsp、开发工具、浏览器的编码格式改为utf-8
      2)若get请求-->servlet容器中conf/server.xml 修改编码格式
        若post请求-->servlet接口中的service()中添加<前提extends HttpServlet实现类>
        request.setCharacterEncoding("utf-8")
        response.setCharacterEncoding("utf-8")

    生活就要逢山开路遇水搭桥,愿共勉!
  • 相关阅读:
    团队冲刺2.7
    单词接龙
    团队冲刺2.6
    梦断代码阅读笔记02
    团队冲刺2.5
    吾日三省吾身(6)
    吾日三省吾身(5)
    周计划01(20200921-20200927)
    吾日三省吾身(4)
    吾日三省吾身(3)
  • 原文地址:https://www.cnblogs.com/TianMu/p/7680457.html
Copyright © 2011-2022 走看看