Servlet简要总结

Servlet简要总结

很久没有更新文章了,今天小编简单总结一下servlet的部分的内容

创建一个web项目的简要步骤:

添加tomcat

创建类继承 HttpServlet 重写dopost() doget()方法

配置web.xml

<servlet>

<servlet-name>servletName</servlet-name>

<servlet-class>对应的类</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>servletName</servlet-name>

<url-pattern>请求路径</url-pattern>

</servlet-mapping>

两个的servletName要相同, 请求时:url-pattern>>servlet-name(servlet-mapping)

>>servlet-name(servlet)>>servlet-class

Servlet

接口:Servlet ServletConfig Serializable

抽象类:GenericServlet

实现类:HttpServlet

String getServletName() 获取servlet名字 包名.类名

ServletContext getServletContext()获取web项目的容器 servletContext 整个工程只有一个,

在web服务启动时,对象就已经生产 服务关闭时,才会丢失

ServletContext 不能手动创建,也不能以任何方式创建

缺点:生命周期太长 每一添加到application 都会添加内存 导致web的服务负担会变大

setAttribute(key,value); Attribute() 内核是Map

getAttribute(key); //获取

String getInitParameter(String var); //获取初始化参数 方便后期修改动态可变的值,比如数据库的链接参数

<init-param>

<param-anme>name</param-name>

<param-value>value</param-value>

</init-param>

可以使用多个

局部初始化 全局初始化

<context-param>

<context-name></context-name>

<context-value></context-value>

</context-param>

全局时使用 getServletContext().getInitParameter(String key)

每个servlet 相互独立

Enumeration<String> getInitParameterNames().//获取所有的初始换参数

Enumeration 只有两个方法

enumeration.hasMoreElements();

enumeration.nextElement();

注解方式: 使用注解 @webServlet( name="name",urlPatterns="/XXX"); 配置在ideal的web方便管理

Servlet的声明周期:

init(ServletConfig)只会执行一次

Service(ServletRequest ,ServletResponse) 用户进来第一个请求的方法,数据的入口

void destroy()

关闭服务时执行destory();

httpServelet中两个service的区别

service(ServletRequest,ServletResponse) //将servlet转为httpServlet 调用service(HttpServletRequest,HttpServletResponse) 此方法判断,调用doget或dopost方法

response

response.setContextType("text/html;charset=utf-8"); 返回的页面格式 页面语言编码

response.sendError([状态编码],[错误信息]); 自定义错误

response.sendError([状态编码]); 自定义错误 只有编码

response.sendRedirect("[路径]") 转向 重定向 跳转

可以跳转本工程路径,也可以到外部工程路径

不能带走request和response 对象

不能访问/WEB-INF目录

会改变用户浏览器的路径(而转发不会改变)

转向是有response发起的( 转发是由request发起的)

企业开发中 一个请求只能对应一个响应对象

实际企业开发中不能在书写逻辑代码 语法上支持接续编写代码(除了转发和转向)

Request

request.getParameterMap(); //获取所有的

request.getParameterValues(); //获取同一个name的值

request.getParameterNames()// Enumeration

request.getSession()//

request.getCharaterEncoding()//获取请求编码 在系统默认语言编码是iso-8859-1

在默认系统中传递中文会出现乱码

实际开发中,前后端都写为utf-8避免乱码(或相同)

request.removeAttribute()

request.getRequstDispatcher("[转发路径]").forword(request,response)// 转发(发报机)

在请求的时候,默认不会显示转发的路径 路径问题:

转发,带走当前当前的响应和请求对象 当两个对象的生命周期延续

企业中,转发使用在转发页面,很少转发到后端servlet

servlet访问与文件夹无关

只能跳转自身工程内容

/ 项目文件下 没有的时候是相对路径访问

转发可以访问 WEB-INF下的文件 (只能使用代码 转发实现)

Sessoin

request.getSession(); session是http协议决定的

HttpSession session=request.getSession();

session.setAttribute(key,value);

session.removeAttribute(key) ; 移除值

session.getAttribute(key); 返回的的是object //用户无法伪造 安全

session.getCreationTime() 获取创建时间 long

Timstamp(session.getCreationTime()) ;

session.isNew() session是否为第一次创建

session.getId();String 每个用户的id都是唯一的

session.getMaxIntactiveIneterval() 返回int 获取session的最大生命时间 默认30分钟

session.setMaxIntactiveIneterval(int) 设置值 在时间内没有进行任何操作session就会丢失

seesion 打开项目的任意页面是,session创建 关闭浏览器时session丢失 服务器关闭的时候也会丢失 session超过最大生命时间

如果页面内容没有动态数据或链接 浏览器会缓存

session会占据内存资源

过滤器

@WebFilter(filterName = "MyFilter",urlPattern="/*")//注解 *通配符

public class MyFilter implements Filter {

尽量使用*结束.指定路径的所有内容都被拦截

Filter跟随web服务启动,web服务关闭而结束

public void destroy() {

}

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {

servletRequest.getRequestURI()//获取请求相对路径

chain.doFilter(req, resp);//放行方法 放行的不会再进入filter

}

public void init(FilterConfig config) throws ServletException {

//执行一次

}

}

<filter>

<filter-name>myFilter</filter-name>

<filter-class>com.xsshuai.filter.MyFilterContext</filter-class>

<init-param>

<param-name></param-name>

<param-value></param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>myFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

使用过多效率低下

在init里获取需要过滤的文件 添加到集合

@WebListener()

public class Listener implements ServletContextListener,

HttpSessionListener, HttpSessionAttributeListener {

public Listener() {

}

web启动时自动启动

public void contextInitialized(ServletContextEvent sce) { }

public void contextDestroyed(ServletContextEvent sce) { }

public void sessionCreated(HttpSessionEvent se) { }

public void sessionDestroyed(HttpSessionEvent se) { }

public void attributeAdded(HttpSessionBindingEvent sbe) { }

public void attributeRemoved(HttpSessionBindingEvent sbe) { }

public void attributeReplaced(HttpSessionBindingEvent sbe) { }

}

Listener的web.xml配置

<listener>

<listener-class>package.className</listener-class>

</listener>

以上是个人部分笔记,大神请忽略,如有错误请评论,我在word上写的上传到头条,如有排版乱的情况,还请见谅

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

php编程基础教程.pptx|php编程培训,php,编程,基础,教程,pptx
php编程基础教程.pptx

历史上的今天:04月20日

ThinkPHP5快速入门

ThinkPHP5快速入门目 录零、序言一、基础二、URL和路由三、请求和响应四、数据库五、查询语言六、模型和关联 (1)模型定义 (2)基础操作 (3)读取器和修改器 (4)类型转换和自动完成 (5)查询范围 (6)输入和验证 (7)关联 (8)模型输出七、视图和模板八、调试和日志九、API开发十、命令行工具十一、扩展十二、杂项SessionCookie验证

ThinkPHP5快速入门基础

ThinkPHP5快速入门基础一、基础快速入门 ( 一 ) :基础本章介绍了 ThinkPHP5 .0 的安装及基本使用 ,并给出了一个最简单的示例带你了解如何开始开发 ,主要包 含 :简介官网下载 omposer安装和更新CGit下载和更新目录结构运行环境入口文件调试模式控制器视图读取数据总结在学习 ThinkPHP5.0 之前 ,如果你还不理解面向对象和命名空间的概念 ,建议首先去PHP手册恶

热门专题

卓越综合高中|卓越综合高中
卓越综合高中
昆明网站建设|昆明网站建设,昆明网站开发,昆明网站建设公司,昆明网站建设价格,昆明网站设计,昆明网站制作,网页设计,高端网站建设,高端网站设计
昆明网站建设
国家开放大学|国家开放大学报名,国家开放大学报考,国家开放大学,什么是国家开放大学,国家开放大学学历,国家开放大学学费,国家开放大学报名条件,国家开放大学报名时间,国家开放大学学历,国家开放大学专业
国家开放大学
中源管业|中源管业,中源管业公司,中源管业有限公司,中源管业电话,中源管业地址,中源管业电力管,中源管业mpp电力管,中源管业cpvc电力管,中源管业pe穿线管
中源管业
云南高职单招|云南单招,云南单招网,云南高职单招网,云南高职单招,云南单招学校,云南单招培训
云南高职单招
大理科技管理学校|大理科技管理中等职业技术学校,大理市科技管理中等职业技术学校
大理科技管理学校
云南开放大学|云南开放大学报名,云南开放大学报考,云南开放大学,什么是云南开放大学,云南开放大学学历,云南开放大学学费,云南开放大学报名条件,云南开放大学报名时间,云南开放大学学历,云南开放大学专业
云南开放大学
小程序开发|微信小程序,小程序开发,小程序,小程序制作,微信小程序开发,小程序公司,小程序开发公司,分销,三级分销系统,分销系统
小程序开发

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部