如何看待和学习基础servlet???

news/2024/5/19 0:49:27 标签: java, servlet, 初学, JDBC, CRUD
    Servlet是sun公司提供的一门用于开发动态web资源的技术。
使用servlet接口,可以开发一个动态web应用,需要2个步骤:
1、编写一个Java类,实现servlet接口。
2、把开发好的Java类部署到web服务器中。

按照一种约定俗成的习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet。
Servlet接口实现类:SUN公司定义了两个默认实现类,分别为:GenericServlet、HttpServlet。

HttpServlet指能够处理HTTP请求的servlet,它在原有Servlet接口上添加了一些与HTTP协议处理方法,它比Servlet接口的功能更为强大。因此开发人员在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。

HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServlet的doGet方法,如为Post请求,则调用doPost方法。因此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,而不要去覆写service方法。


开发一个servlet

新建一个web project工程
工程中开发Servlet类   
在web.xml中配置servlet
部署项目到tomcat
启动tomcat
访问servlet


servlet的XML配置及走向:
如图(1)



servlet生命周期:

Servlet生命周期分为三个阶段:

1,初始化阶段:调用init()方法

2,响应客户请求阶段:调用service()方法

3,终止阶段:调用destroy()方法

如图(2)




servlet的加载:

默认Servlet类在启动项目时不加载,首次访问时才加载
servlet中配置<load-on-startup>1</load-on-startup>后,该servlet就会在启动项目时,加载servlet(实例化并调用其init()方法)

1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
2)它的值必须是一个整数,表示servlet应该被载入的顺序
2)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet
3)当值小于0或者没有指定时,则表示容器在该servlet被访问时才会去加载。
4)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
5)当值相同时,容器就会自己选择顺序来加载。


HttpServletResponse:

Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象和代表响应的response对象。request和response对象即然代表请求和响应,那我们要获取客户机提交过来的数据,只需要找request对象就行了。要向客户机输出数据,只需要找response对象就行了。  
设置响应类型 response.setContentType("text/html;charset=utf-8");
负责向客户端(浏览器)发送数据的相关方法


HttpServletRequest:

HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。

乱码问题:


post请求处理乱码:

设置请求编码request.setCharacterEncoding("UTF-8");
    要求请求方式是post      请求方式为get 上面设置编码不行
    form表单提交,都要设置为method=”post”

get请求处理乱码:
    String name = request.getParameter("name");
    name = new String(name.getBytes("ISO-8859-1"),"UTF-8");

获取请求参数String name = request.getParameter("name");
注意:
如果参数“name” 前台发请求有参数,没有赋值, 得到的是””
如果参数“nama”前台发请求没有参数,得到是null


当一个参数名,多个值
String[] aihao = request.getParameterValues("aihao");
    
    
请求转发和重定向:

请求转发:指一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理。

通过request对象提供的getRequestDispatche(String path)方法,该方法返回一个RequestDispatcher对象,调用这个对象的forward(request,response)方法可以实现请求转发。

请求重定向:指一个web资源收到客户端请求后,通知浏览器重新请求另一个web资源。
response.sendRedirect(String path)方法实现重定向


请求重定向和请求转发的区别:

一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理,称之为请求转发/307。
一个web资源收到客户端请求后,通知浏览器去访问另外一个web资源进行处理,称之为请求重定向/302。

区别:
请求转发路径不会变为转发之后的     重定向会变为最后定向的路径
请求转发可以携带转发之前request保存的数据,重定向会丢失
请求转发只能在本应用内路径之间跳转    重定向可以跨域


ServletContext:

WEB容器在启动时,它会为WEB应用程序创建一个对应的ServletContext对象,它代表当前web应用。ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext()方法获得ServletContext对象。


Cookie:

Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。

response接口也中定义了一个addCookie方法,它用于在其响应头中增加一个相应的Set-Cookie头字段。
request接口中也定义了一个getCookies方法,它用于获取客户端提交的Cookie。


cookie中存取中文:

要想在cookie中存储中文,那么必须使用URLEncoder类里面的encode(String s, String enc)方法进行中文转码,例如:

    Cookie cookie = new Cookie("userName", URLEncoder.encode("优众", "UTF-8"));
     response.addCookie(cookie);

在获取cookie中的中文数据时,再使用URLDecoder类里面的decode(String s, String enc)进行解码,例如:

    URLDecoder.decode(cookies[i].getValue(), "UTF-8")



Cookie注意细节:

一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE)。
一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个WEB站点提供的Cookie。
浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。
如果创建了一个cookie,并将他发送到浏览器,默认情况下它是一个会话级别的cookie(即存储在浏览器的内存中),用户退出浏览器之后即被删除。若希望浏览器将该cookie存储在磁盘上,则需要使用maxAge,并给出一个以秒为单位的时间。将最大时效设为0则是命令浏览器删除该cookie。


Session:

Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。

session实现原理
服务器创建session出来后,会把session的id号,以cookie的形式回写给客户机,这样,只要客户机的浏览器不关,再去访问服务器时,都会带着session的id号去,服务器发现客户机浏览器带session id过来了,就会使用内存中与之对应的session为之服务。




为最美的你加油
然后向世界证明
天使是存在的
Who --> U

   


http://www.niftyadmin.cn/n/1867814.html

相关文章

该怎么学习JSP???

如何用JSP操作页面&#xff1f;JSP的基础值怎么掌握&#xff08;1&#xff09; 这一篇介绍一下JSP的一些语法和属性&#xff0c; JSP全名为Java Server Pages&#xff0c;中文名叫java服务器页面&#xff0c;其根本是一个简化的Servlet设计。 JSP本质 就是S…

学习笔记之JSP的标签和在JSP中使用JavaBean

如何用JSP操作页面&#xff1f;JSP的基础值怎么掌握&#xff08;2&#xff09; 这一篇介绍一下JSP的一些常用标签和在JSP中使用JavaBean&#xff0c; jsp的标签 JSP标签也称之为Jsp Action(JSP动作)元素&#xff0c;它用于在Jsp页面中提供业务逻辑功能&#xff…

java web 的开发模式和 servlet 的作用域详解

JavaWeb简单的两种开发模式SUN公司推出JSP技术后&#xff0c;同时也推荐了两种web应用程序的开发模式JSPJavaBean模式 ServletJSPJavaBean模式ServletJSPJavaBean开发模式在平时的JavaWeb项目开发中&#xff0c;在不使用第三方mvc开发框架的情况下&#xff0c;通常会选择Servle…

如何看待愈来愈强大的 EL 表达式

EL 全名为Expression Language表达式语言 EL主要作用&#xff1a; 1、获取数据  EL表达式主要用于替换JSP页面中的脚本表达式&#xff0c;以从各种类型的web域 中检索java对象、获取数据。 2、执行运算 利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算…

JS的基础知识

01-javascript历史发展 1&#xff09;1995&#xff0c;Netscape&#xff08;网景公司&#xff09;&#xff0c;navigator&#xff08;导航者&#xff09; 2&#xff09;浏览器中的内容&#xff0c;只能看不能用&#xff0c;想开发一门前端语言&#xff0c;做表单提交。 3&…

JavaScript的常用方法-基础

1.string对象&#xff1a;字符串其实使用数组来实现的 1&#xff09;charAt(index) : 获取索引index处的字符 2&#xff09;str.indexOf(字符串) : 获取字符串在str中首次出现的位置&#xff0c;若不存在返回-1 3&#xff09;lastIndexOf(字符串)&#xff1a;获取字…

JS中的事件处理和文档处理应该记住哪些内容。。。

1.事件&#xff1a; 当 ..... 时候&#xff0c;执行....操作。 当 对 电脑或者网页做任何操作&#xff0c;都会伴随某个功能的实现&#xff08;函数的执行&#xff09; javascript 就是基于事件驱动的语言 2.添加事件的方式&#xff1a; [1] 内联方式&#xff1a;…

一片文章叫你玩转JQuery

1.为什么要学习jQuery&#xff1f;js的缺点&#xff1a;1&#xff09;花费10天时间开发设计&#xff0c;js中有很多的漏洞&#xff1b;不适合于大系统的开发。2&#xff09;获取dom元素时&#xff0c;是很不灵活的&#xff0c;主要通过4个方法。3&#xff09;方法的长度太长&am…