Servlet 服务器端小程序

1.tomcat安装及目录介绍
  JAVA_HOME
  CATALINA_HOME
  PATH=%JAVA_HOME%/bin;

2.静态web项目、动态web项目
  WEB-INF
    lib
    classes
    web.xml
3.外部动态web项目
  server.xml
  <host>
    <Context path="" docBase="" />
  </host>

4.tomcat和eclipse的整合!tomcat镜像!

5.http协议介绍及get与post请求、响应状态码
  格式:
    报文首部
      报文首行
      报文头部
    空行
    报文体

  请求报文:get请求、post请求
  响应报文
  get请求和post请求的区别
    1)get请求是通过url地址栏来传递参数的,而post请求通过报文体来传递参数的
    2)get请求可以在浏览器地址栏中看到请求参数,而post请求看不到
    3)get请求对传递的参数有限制,最多允许255个字符,所以数据比较大的话我们使用post请求!
    4.在表单中一般我们都使用post请求,除了在表单中,页面中的其它地方基本上都是使用get请求!

6.servlet快速入门
  1)servlet是web的三大组件之一;web的三大组件是指:Servlet、Filter、Listener
  2)狭义的servlet:servlet
  3)广义的servlet:凡是实现了servlet接口的类都称之为servlet

7.如何快速定义一个servlet?
  1)自定义实现类,实现servlet接口,实现接口就意味着实现servlet中的方法
  2)去web.xml中注册一下

问题点:
  1)创建动态web项目的时候没有选择tomcat
  2)复制类的全路径的时候

  3)项目名书写:不要8.x

 

servlet的配置
  <!-- 向服务器注册servlet -->
  <servlet>
  <!-- servlet-name是给我们使用的,我们使用这个servlet-name对servlet进行配置! -->
  <servlet-name>AServlet</servlet-name>
  <!-- servlet-class指定全类名,给服务器使用,服务器使用这个全类名创建一个servlet实例【对象】 -->
  <servlet-class>com.neuedu.servlet.AServlet</servlet-class>
  </servlet>

  <!-- servlet-mapping做请求映射 -->
  <servlet-mapping>
  <servlet-name>AServlet</servlet-name>
  <!-- 请求映射是通过这个url-pattern来实现的! -->
  <url-pattern>/BServlet</url-pattern>
  </servlet-mapping>

  注意点:
    1.<url-pattern>标签中指定的映射路径不必和<servlet-name>标签指定的内容保持一致!
    2.只有你浏览器地址栏中请求的url和我们这里<url-pattern>标签中的映射一致的时候,我们自定义的servlet类才会处理这个请求!

生命周期

  servlet是由tomcat服务器来管理的!

  servlet生命周期:是指servlet对象由产生到销毁的过程!

  servlet生命周期涉及的几个方法:
    1.构造器方法:只会在第一次访问这个servlet的时候调用一次,调用一次就说明servlet是单例的,但是servlet是多线程的,非线程安全的,也就是说在servlet中我们尽量不要在service方法中操作全局变量!

    2.init方法:init方法只会在第一次访问servlet的时候调用一次,对servlet对象进行初始化操作!

    3.service:service方法会在每次访问这个servlet的时候都调用一次,而且我们的业务逻辑也是写在这个service方法!

    4.destroy方法::destroy方法只会在我们的项目卸载的时候调用一次,也就是说在服务器关闭的时候会在服务器关闭的时候调用一次!

servletConfig

  ServletConfig:是一个接口,一个ServletConfig对象只代表当前的servlet类的配置信息。
    1) represent:
      * <servlet>
      <!-- servlet-name是给我们使用的,我们使用这个servlet-name对servlet进行配置! -->
      <servlet-name>AServlet</servlet-name>
      <!-- servlet-class指定全类名,给服务器使用,服务器使用这个全类名创建一个servlet实例【对象】 -->
      <servlet-class>com.neuedu.servlet.AServlet</servlet-class>
      </servlet>

    2).如何获取:
      由服务器创建,通过init方法的参数直接传递给我们,我们直接在init方法使用就可以了!

    3)功能:
      getServletName():获取当前servlet-name值,也就是获取servletname
      getInitParameter("password"):获取servlet的初始化参数!
      getServletContext():获取当前web应用!

ServletContext
  1) 代表:代表的是当前web应用,也就是指的web.xml文件中的信息!

  2)获取:通过ServletConfig对象的getServletContext()获取!

  3) 功能:
    getInitParameter:获取整个web应用的初始化参数,也就是如下:
      <context-param>
      <param-name>user</param-name>
      <param-value>lisi</param-value>
      </context-param>
    获取资源的真实路径:getRealPath()
      虚拟路径:http://localhost:8080/servlet-demo1/index.html
      真实路径:E:\LHF teacher\marsworkspace\servlet-demo1\WebContent\index.html

MyGenericServlet
  1.定义一个抽象类实现servlet接口,保留service方法不去实现,其余方法都实现了!
  2.自定义抽象类子类,在web.xml文件中注册一下这个子类!

HttpServlet
  public class AServlet extends HttpServlet {
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }

  }  

HttpServletRequest
  1)代表:代表浏览器向服务器发送的请求报文
  2) 获取:由tomcat服务器创建,然后做为参数传递给我们相对应的doGet或者doPost方法
  3) 功能:
    getParameter()获取请求参数
    getContextPath():获取当前项目名
    setAttribute/getAttribute:本身就是一个域对象!
    request.getRequestDispatcher("1.html").forward(request, response);可以实现转发功能

HttpServletResponse
  1)代表:服务器响应给浏览器的响应报文
  2)获取:由服务器创建,然后做为参数传递给我们相对应的doGet或者doPost方法!
  3)功能:
    response.getWriter().println("<h3>hello world!</h3>");可以返回给浏览器一个页面或者一个页面片段!
    response.sendRedirect("/servlet1/1.html"); :可以做请求的重定向

转发和重定向

  转发:当浏览器向服务器发送请求的时候,服务器自己不处理,而是调用其它的web资源进行处理!
  重定向:当浏览器向服务器发送请求的时候,服务器返回给浏览器一个特殊的响应,这个特殊的响应告诉浏览器再向另一个地址发送一个请求!

  转发和重定向的区别
              发生在浏览器端还是服务器   浏览器的请求次数   浏览器地址栏是否发生变化    浏览器是否能够感知到
    转发[request]        发生在服务器端          1            不发生变化           感知不到
    重定向[response]    发生在浏览器端           2            发生变化           能感知到

编码问题分析
  通信双方在进行通信的时候,实际上是将通信的内容【信息】是按照一定的规则转化为二进制进行通讯的
  而这个一定的规则就是字符的编码:ascii,gb2312,gbk,iso8859-1,utf-8;
  在请求到达的时候,另一方就需要解码!

  乱码原因:
    通信双方的编码方式和解码方式不一致造成的,
  解决办法:
    统一通信双方的编码方式和解码方式,都使用utf-8编码!

  编码分类:
    请求编码
      浏览器编码---》服务器解码iso8859-1 
    响应编码
      服务器编码----》浏览器解码 
    服务器端默认使用的是iso8859-1编码,而浏览器默认使用的是gb2312,当然我们也可以在页面中告诉浏览器用什么编码方式!

  请求编码
    get请求:
      统一浏览器和服务器端的编码格式为utf-8编码:在server.xml文件的connector标签中指定编码格式为utf-8编码:URIEncoding="utf8" 
    post请求:
      我们可以在post方法中在第一次获取请求参数之前通过request.setCharacterEncoding("utf-8");来设置解码格式!

  响应编码
      可以通过response.setContentType("text/html;charset=utf-8");设置服务器和浏览器的编码和解码格式!

路径问题:

  绝对路径:绝对路径是以/开头的路径!
    相对于当前服务器的绝对路径:如果是服务器解析,那么/就代表当前服务器的绝对路径:http://localhost:8080
    相对于当前web应用的绝对路径:代表的是http://localhost:8080/项目名/

    如果是服务器端解析,代表的是:http://localhost:8080/项目名/
    如果是浏览器端解析,代表的是:http://localhost:8080

  相对路径:不是以/开头的路径是相对路径,相对的是当前web资源目录的路径!

  常见的路径:
    url-pattern:
    转发的路径:
      这两个的绝对路径由服务器解析,相对于项目的根目录    http://主机地址:端口号/项目名/

  重定向的路径:
    在实际开发中,我们使用的是绝对路径,不使用相对路径!开发中尽量不要使用硬编码的方式!
  页面中的路径:
    这两个路径由浏览器解析,相对于服务器的根目录
    http://主机地址:端口号/

  base标签

    base标签里面有一个href属性,这个属性允许我们用使用相对路径的方式使用绝对路径!
    我们再使用相对路径的时候,相对路径会以这个href属性值作为前缀!

时间: 2024-10-12 12:07:06

Servlet 服务器端小程序的相关文章

servlet连接mysql小程序

1.我们会自己编写java代码与mysql通信,但是怎么在网络的环境下,用servlet去跟mysql连接 2.在基本的servlet程序下,我们再添加连接数据库的部分 1 import javax.servlet.http.HttpServlet; 2 import javax.servlet.http.HttpServlet;import java.io.IOException; 3 import java.io.*; 4 import javax.servlet.http.HttpServ

实现一个servlet的helloworld小程序(不适用Eclipse)

1. 在tomcat中的webapps下建一个应用程序FirstServlet(C:\tomcat\webapps\FirstServletweb) 2. 在应用程序下建立目录 C:\tomcat\webapps\FirstServletweb\WEB-INF\classes 3. 在class目录下建立一个文件 FirstServlet.java 4. 实现内容 package cn.school; import java.io.*; import javax.servlet.*; publi

小程序,wx.request;动态向服务器端请求数据。

wx.request 通过微信封装的ajax,动态向服务器端请求数据.以下是在练习微信小程序时写的测试代码. 其中index.js文件如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 //测试: wx.request({      url:'http://hd.jz-lm.com/mobile/Ceshi/index',      method: 'GET',      data: {},      header: {          'Ac

Java Servlet:服务器小程序

servlet:服务器小程序 servlet是一个接口,接口是一种规范,因此servlet是一种规范 一个类声明为抽象类的原因: 不包含抽象方法,不想被实例化 包含抽象方法,子类有对抽象方法的不同实现 什么是Servlet容器? Servlet容器,顾名思义里面存放着Servlet对象.我们为什么能通过Web服务器映射的URL访问资源?肯定需要写程序处理请求,主要3个过程: 接收请求:web服务器 处理请求: servlet 响应请求:web服务器 servlet容器: tomcat Jetty

微信小程序 支付功能 服务器端(TP5.1)实现

首先下载微信支付SDK ,将整个目录的文件放在 /application/extend/WxPay 目录下 在使用SDK之前我们需要对 WxPay.Config.php 进行配置 <?php namespace app\api\service; use app\api\model\Order as OrderModel; use app\lib\exception\OrderException; use app\lib\exception\TokenException; use think\Ex

Servlet服务器端编程之再体验

1.什么是Servlet?    * 服务器端Java程序,servlet需要交给服务器来运行.    * 与javax.servlet.Servlet接口有关的java程序    * sun公司提供一套servlet接口(API)具体实现的是靠web服务器(比如Tomcat.webLogic.JBoss等)    2.如果使用servlet?[必须]    * 创建web项目    * 创建一个类,并实现Servlet接口    * 交给服务器运行 /WEB-INF/web.xml      

微信小程序支付(java后端)

第一步 进入小程序,下单,请求下单支付,调用小程序登录API来获取Openid(https://mp.weixin.qq.com/debug/w ... .html#wxloginobject),生成商户订单,这些都是在小程序端完成的业务. 小程序端代码 // pages/pay/pay.js var app = getApp(); Page({     data: {},     onLoad: function (options) {         // 页面初始化 options为页面跳

获取微信用户唯一标识openid | 小程序

一.基础知识 ? 接口地址https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code? 请求参数appid:小程序的唯一标识secret:小程序的app secretjs_code:用户的登录凭证code(使用wx.login({})可获取到)grant_type:填写authorization_code? 返回

如何入门微信小程序开发

最近微信开发小程序挺火的,自己选择了腾讯云官方推出的相册. 先下载: 破解版IDE下载地址,以及使用说明: http://download.csdn.net/detail/richard_jason/9660819 http://download.csdn.net/detail/richard_jason/9660821 这里由于csdn有上传大小限制,所以只能做两次上传了.要放在一起看哦. 安装步骤 一个步骤都不能错哦 1.安装0.7 - 扫码登陆 - 关闭0.7 2.安装0.9 --不要启动