栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Servlet学习

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Servlet学习

web开发概述

1.web程序

所有的程序都部署在服务器端,通过浏览器远程访问

服务器:

提供服务  接收请求  响应
服务器:广义: 软件+硬件                  狭义:软件(程序)
放置文件(项目)    供因特网中的其他电脑访问
服务器-->web容器-->中间件(连接用户请求    与程序)

2.web环境搭建

	安装服务器   apache提供的一款开源的服务器   tomcat
	官网下载
	解压
	配置JAVA_HOME环境变量   (到java.jdk的路径)
	TOMCAT根据java_home去查找jdk安装位置
	在tomcat的bin目录 双击运行    startup.bat命令   启动tomcat
	bin 放着各种命令   startup.bat命令启动       shutdown.bat命令关闭
	conf放着配置文件   例如server.xml   修改端口号
	lib tomcat运行所需要的jar包
	logs 运行产生的日志文件
	temp 临时缓存文件
	webapps 部署web程序的目录
	work 工作目录
	访问   IP+端口/文件名



搭建完成

创建发布web项目

在ider中创建一个基本的java项目
右键 add webramework 变为web项目
项目
src java代码
web 配置文件   网页代码

发布方式
手动发布:自己把项目中的代码粘贴到服务器中,平时开发不用(淘汰)
自动发布:自动将web应用发布到web服务器下,需要在开发工具中集成tomcat进来


Servlet(JavaEE javaWEB)
servlet ==>server +apple---->用java编写的服务器端程序
它运行在web服务器中,web服务器负责Servlet和客户的通信以及调用Servlet方法,Servlet和客户通信采用"请求/响应"的模式。

作用:
1.接收用户发送的请求
2.调用其他的Java程序来处理请求
3.根据处理结果,服务器将响应返回给客户端

Servlet的常见和使用

1.创建一个类继承javax.servelt.http包下的HttpServlet
2.在web.xml文件中配置Servlet
3.运行Servlet程序
	 通过浏览器访问http:localhost:8080/helloword/配置的url-pattern
由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用元素和元素完成。

Servlet创建和使用-Servlet配置

	元素用于注册Servlet
	它包含由=有两个主要的子元素
	
	分别用于设置Servlet的注册名称和Servlet的完整类名
	一个元素
	用于映射一个已注册的Servlet的一个对外访问路径
	它包含有两个元素:
	分别用于指定Servlet的注册名称和Servlet的对外访问路径
	url-pattern配置模式:"/"代表当前web应用的根目录
	精确匹配 例如/test  访问http://10.43.11.143/myapp/test
	匹配任意的url 例如
public class DemoServlet extends HttpServlet {
    
    public DemoServlet(){
        System.out.println("DemoServlet");
    }
    

    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("init");
    }

    
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("service");
    }

    
    @Override
    public void destroy() {
        System.out.println("destroy");
    }
}



Servlet详细介绍
web开发流程

servlet的生命周期

package com.slg.firstweb.servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class DemoServlet extends HttpServlet {
    
    public DemoServlet(){
        System.out.println("DemoServlet");
    }
    
    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("init");
        System.out.println( config.getInitParameter("name"));;//获得配置文件中的信息
        System.out.println(config.getServletName());
    }
    
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("service");
    }

    
  
}

http协议
什么是HTTP?

超文本传输协议服务器传输超文本到到本地浏览器的传送协议
是互联网上应用最为流行的一种网络协议
用于定义客户端浏览器和服务器之间交换数据的过程。
HTTP是一个基于TCP/IP通信协议来传输数据。
HTTP是一个属于应用层的协议,由于其简捷,快速 的方式
适用于分布式超媒体信息系统

http请求

客户端连上服务器后,向服务器请求某个web资源
称之为客户端向服务器发送了http请求
请求包括:
	请求行
	请求头
	请求体
请求行包含http请求方式,请求资源名称,http版本
请求头包含主机地址,以及客户端的一些环境信息
以键值对的形式传递。
请求体代表着浏览器在pos请求方式中传递给服务器的参数
请求体中参数以键值形式传递
多个用&连接,服务器接收到后在解析
例如:username=admin&userpwd=123

两种http的请求方式

GET方式:
	超链接访问,默认是GET方式
	form提交,不指定method,默认为GET方式

POST方式:
	form提交,指定method="POST"

Get方式与Post方式的区别

Get方式主要是从服务器获取信息
Post方式主要是向服务器提交信息
Get方式在通过URL提交数据,数据可在URL中看见
Post方式数据在URL中不可见,数据放置在请求体中提交
Get方式提交数据大小受限制(一般为1kb,与浏览器有关)
Post方式则没有限制



    
    我的第一个web程序



列表
账号:
密码:



post方式




    
    我的第一个web程序



列表
账号:
密码:


HttpServletRequest

	HttpServletRequest是ServletRequest的子接口
	HttpServletRequest比ServletRequest多了一些针对于Http协议的方法。
	请求和响应是Web交互最基本的模式,在Servlet中
	用HttpServletRequest来表示请求。
	HttpServletRequest:封装了请求的信息,可以从中获取任何请求信息。

获取客户机/服务器信息

getMethod() 得到客户机请求方式
getScheme() 请求协议
getRemoteAddr()  返回发出请求的客户机的IP地址
getServletName() 获得服务器名(ip域名)
getServletPort()  服务器端口

request获取请求参数

	getParameter(name)    ---String通过name获得值
	getParameterValues ---String[ ] 通过name获得多值
	整理中文乱码
		post 
			setCharacterEncoding(编码格式)

HttpServletReponse

HttpServletResponse是ServletResponse的子接口
web服务器接收到客户的http请求
会针对每次一请求
分别创建一个代表响应的HttpServletResponse对象
HttpServletResponse对象代表响应。

向浏览器动态生成网页内容
用getWriter()获得一个Print Writer字符输出流输出数据,response会默认以ISO8859-1将需要输出到浏览器的字符进行解码,如果输出的字符在ISO8859-1中不存在,就会导致乱码问题。


response.setContetnType(“text/html;charset=utf-8”);方法可以同时设定response所使用的字符集编码和浏览器打开所用的字符集编码。

ServletContext
web容器在启动时,它会为每个web应用程序都创建一个对应的ServletContext对象。

由于一个web应用中所有Servlet共享一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现数据交互,存储一些全局信息。

常用方法:

getInitParameter("name")  
			获得当前应用的初始化参数
setAttribute("attrname",value)
			设置Servlet Context属性并赋值
getAttribute("attrname")
			获得ServletContext属性指定值
removeAttribute("attrname")
			删除ServletContext指定属性
getRealPath(filename) 
			获得文件的绝对路径
getContextPath() 
			获得当前应用的根目录

session
Session对象是javax.servlet.http.HttpSession的实例
它在第一个JSP页面被装载时自动创建,完成绘画期管理。

从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为这一个会话。

Servlet API中,定义了HttpSession接口,用来封装会话对象。

HttpSession是接口,会话对象是web容器创建的,在Servlet中使用,HttpServletRequest中的方法获得会话对象。

public HttpSession getSession(); 获得跟当前请求相关的session,如果不存在session,就创建一个新的session对象返回。

使用session实现会话机制的过程
1.当容器创建一个新的HttpSession对象后,即生成一个随机数,称为会话ID,并将ID值封装成一个名字为JSESSIONID的session,返回给客户端。

2.调用request.getSession方法获得会话对象时,容器先从request中获取JSESSIONID值,根据JSESSIONID值查找到对应的会话对象,返回使用。

3.如果没有获取到JSESSIONID值,认为当前的请求没有相关联的会话对象,重复步骤1

HttpSession接口中定义了一系列的方法

返回值类型方法名称说明
voidsetAttribute(String key, Object value)以key/ value的形式保存对象值
ObjectgetAttribute(String key)通过key获取对象值
voidremoveAttribute(String key)通过key删除属性
intgetMaxInactiveInterval()获取session的有效非活动时间,以秒为单位
voidsetMaxInactiveInterval(int interval)设置session的最大非活动时间,以秒为单位,超时将被销毁
StringgetId()获取session对象的编号
voidinvalidate()设置session对象失效
booleanisNew()判断一个session是不是一个新创建的会话对象

会话对象的生命周期
会话对象是容器创建的,并保存在容器中,如果客户端连接到服务器后,却置之不理,不做任何操作,那么容器维护这些会话对象将占用很多资源,因此容器都会在默认时间内销毁会话对象,多数容器默认30分钟销毁会话对象。
除了根据有效时间使会话对象失效外,还可以调用HTTP Session中的invalidate方法,使会话失效,立即销毁会话对象。

会话对象(session)由谁创建的?
有若干个客户端与服务器连接,服务器会为每个客户端的一次会话创建一个会话对象。


过滤器的概念与作用
概念:

过滤器位于客户端和web应用程序之间
用于检查和修改两者之间流过的请求
在请求到达Servlet/JSP之前,过滤器截获请求
作用:
	在客户端的请求访问后端资源之前
拦截这些请求

过滤器相关的API
servlet API,与过滤器有关的API共有三个接口,分别是:

Filter接口
	是过滤器类必须实现的接口,该接口中有三个方法
		init():该方法是对filter对象进行初始化的方法
				仅在容器初始化filter对象结束后被调用一次
				参数FIlterConfig可以获得filter的初始化参数
		doFilter():该方法是filter进行过滤操作的方法
						是最重要的方法,过滤器实现类必须实现该方法
						方法体中可以对request和response进行预处理
						其中FilterChain可以将处理后的request和response对象传递到过滤链上的下一个资源。
		destroy():该方法在容器销毁过滤器对象前被调用。
			
	
FilterChain接口
	该接口类型作为Filter接口中doFilter方法的参数使用
	FilterChain接口中有一个方法
		doFilter():该方法可以将当前的请求和响应传递到过滤链上的下一个资源
				   可能是下一个过滤器,也可能是目标资源

FilterConfig接口
	该接口类型作为Filter接口中的init方法的参数使用
	FilterConfig接口中有一个常用的方法:
		getInitParameter(String name)该方法用来获得过滤器得初始化参数值
		在web.xml中,可以为每一个filter配置需要得初始化参数
		与Servlet得类似
		过滤器得初始化参数即可通过FilterConfig中的getInitParameter方法获取。

过滤器总结:

过滤器用来实现通用的功能,减少代码冗余,提高可维护性
一个过滤器可以配置给多个资源使用
一个资源也可以配置给多个过滤器,按照配置顺序调用

监听器
Servlet监听器是Servlet规范中定义的一种特殊类,用于监听

ServletContext、HttpSession和ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中属性发生修改的事件。

监听器分类
按监听对象分类:

1.用于监听应用程序对象(ServletContext)
2.用于监听用户会话对象(HttpSession)
3.用于监听请求消息对象(ServletRequest)

按监听事件分类:

1.监听对象的创建和销毁的事件监听器
2.监听事件属性变更(添加,修改,移除)的监听器。

监听器接口
Servlet API中定义了监听器接口,用来监听不同的事件类型

ServletContextListener:上下文监听器
ServletContextAttributeListener:上下文属性监听器
ServletRequestListener:请求监听器
ServletRequestAttributeListener:请求属性监听器
HttpSessionListener:会话监听器
HttpSessionAttributeListener:会话属性监听器

创建监听器类
创建监听器类,实现监听器接口,在web.xml文件中配置监听器类。


	
	监听器类全类名
	

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/273801.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号