javaWeb编程_Servlet02
2017-07-05 17:30
197 查看
Servlet02
一、B/S和CS:
1、B/S:Brower/Server浏览器--服务器架构。
2、C/S:Client/Server客户端--服务器架构。
3、B/S和C/S的优缺点:
(1)B/S:服务器负荷重,维护成本相对来说低。
(2)C/S: 服务器负荷轻,但维护成本相对来说高。
4、B/S模式工作原理:
在B/S模式中,客户端运行浏览器软件。浏览器以超文本形式向Web服务器提出访问数据库的要求,Web服务器接受客户端请求后,将这个请求转化为SQL语法,并交给数据库服务器,数据库服务器得到请求后,验证其合法性,并进行数据处理,然后将处理后的结果返回给Web服务器,Web服务器再一次将得到的所有结果进行转化,变成HTML文档形式,转发给客户端浏览器以友好的Web页面形式显示出来。
二、Servlet类:
1、右键直接创建servlet的类的时候可以选择重写父类javax.servlet.http.HttpServlet的一些方法,比如doGet(),doPost(),service()等,根据自己的需要选择重写相应的方法。
在创建的第二步会到配置servlet的页面这里可以选择Mapping-URL的名字,确定好过后就会在web.xml中自动配置好了该servlet,一般创建好了过后到web.xml中看一下配置是否正确,是否需要修改,手动配置在上一篇文章中提到过。
doGet()方法:当请求方式是GET的时候调用该方法。
doPost()方法:当请求方式是POST的时候调用该方法。
在上一篇文章中我们有提到过重写service()方法,这里的doGet(),doPost()可以做相同的操作,而且更加明确,清楚的知道是客户端是以什么方式访问的。
一般在项目中这样写:
这里在doGet方法中调用了doPost方法,当不知道是什么方式请求的时候就可以考虑到两种情况。
2、可以改变Servlet的初始化时间
服务器启动的时候自动初始化:
在该servlet的配置时,在<servlet>标签中添加<load-on-startup>0<load-on-startup>
标记容器是否在启动的时候就加载这个servlet。当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;当
是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。正数的值越小,启动该servlet的优先级越高。
三、转发和页面重定向:
1、请求转发——服务器内部跳转
服务端页面A自行将请求发送到别的页面B,由B进行响应输出。这种转发由服务端自行完成。
目标页面B可以获得A之前获得的请求数据“request”。(但这需要api能够传递request和response参数传到目标
页面B)。页面之间相当于能够数据共享。
转发是在服务器内部控制权的转移,客户端浏览器的地址栏不会显示出转向后的地址。
对于javaWeb项目来说,使用request对象可以做到这点。
<%
RequestDispatcher rd=request.getRequestDispatcher("/ 转到的页面");
rd.forward(request,response);
%>
转发之前如果有输出语句,那些内容将被抛弃。
可以通过forward方法将提交信息在多个页面间进行传递。
"/"表示项目的根目录,不加"/"表示当前servlet所在的目录
例:
在这个例子中就用到了转发,当user不等于空时跳转到success.jsp界面,上面一句
的request.setAttribute("username",username)设置的属性值为username 通过键值对的方式发送到转发
的页面,在那边用${username}或者request.getAttribute("username")来获取。
2.重定向
服务端指示浏览器跳转。然后客户端浏览器会重新发起相应的新的internetURL地址请求,从而实现页面转向。
浏览器之前向服务端发送的请求数据 “request中的内容”将不会发送到新的URL中去。
在浏览器地址栏中可以显示转向后的地址。
通过浏览器测试,可以发现浏览器收到过服务器状态码Status Code:302 OK。
对于javaWeb项目来说,response对象的方法void sendRedirect (“/项目名/转到的页面”);可以实现这种重定向。在 这句后,程序员最好立即调return;
才不容易出错。
如果真的发生了重定向,之前如果有输出语句,那些内容将被抛弃。、
注:jsp:forward动作的功能也基本和此功能一致。(jsp:forward是服务器端转发。)
"/"表示项目的根目录,不加"/"表示当前servlet所在的目录,因为重定向后还会执行下面的代码,所以让return
来结束该方法。
浏览器发出两次请求-即该Servlet和“/项目名/转到的页面”地址(自动发出该次请求)
请求重定向是把“/项目名/转到的页面”的地址发给浏览器,让浏览器进行二次请求,所以浏览器的地址是“/项目名/转到的页面”
的地址。
例如:跳转到百度:response.[b]sendRedirect("http://www.baidu.com");[/b]
四、常用的几个路径字符串(重要)
以下几个路径字符串很重要,它们是许多有经验的程序员总结出来的,也是许多大型公司常常在jsp文件头部使用的代码。
<%
(1) String path = request.getContextPath();//当前应用程序名。 如果应用刚好发布为容器的缺省应用(即没有应用名),则这个方法就会返回一个空字符串
//如得到 /test
(2) String basePath = request.getScheme() + "://" + request.getServerName()
+ ":" + request.getServerPort() + path + "/"; //当前应用的全路径(也就是包含进协议和主机名)。 用它拼接上诸如 /css、/js ,就刚好能访问该应用根目录下的静态资源
//如得到 http://www.baidu.com:8080/test (3)String url = request.getRequestURI()+"?"+request.getQueryString();//得到除“协议、主机”之外的仅针对本容器的 统一资源定位符(1)其中request.getRequestURI()得到统一资源定位符,(2)request.getQueryString()得到查询串
//如得到/test/acontroller/b/c.page?x=1&y=2&z=3
(4)String baseurl=request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + url; //当前的网址
//如得到http://www.baidu.com:8080/test/acontroller/b/c.page?x=1&y=2&z=3
%>
一、B/S和CS:
1、B/S:Brower/Server浏览器--服务器架构。
2、C/S:Client/Server客户端--服务器架构。
3、B/S和C/S的优缺点:
(1)B/S:服务器负荷重,维护成本相对来说低。
(2)C/S: 服务器负荷轻,但维护成本相对来说高。
4、B/S模式工作原理:
在B/S模式中,客户端运行浏览器软件。浏览器以超文本形式向Web服务器提出访问数据库的要求,Web服务器接受客户端请求后,将这个请求转化为SQL语法,并交给数据库服务器,数据库服务器得到请求后,验证其合法性,并进行数据处理,然后将处理后的结果返回给Web服务器,Web服务器再一次将得到的所有结果进行转化,变成HTML文档形式,转发给客户端浏览器以友好的Web页面形式显示出来。
二、Servlet类:
1、右键直接创建servlet的类的时候可以选择重写父类javax.servlet.http.HttpServlet的一些方法,比如doGet(),doPost(),service()等,根据自己的需要选择重写相应的方法。
在创建的第二步会到配置servlet的页面这里可以选择Mapping-URL的名字,确定好过后就会在web.xml中自动配置好了该servlet,一般创建好了过后到web.xml中看一下配置是否正确,是否需要修改,手动配置在上一篇文章中提到过。
doGet()方法:当请求方式是GET的时候调用该方法。
doPost()方法:当请求方式是POST的时候调用该方法。
在上一篇文章中我们有提到过重写service()方法,这里的doGet(),doPost()可以做相同的操作,而且更加明确,清楚的知道是客户端是以什么方式访问的。
一般在项目中这样写:
这里在doGet方法中调用了doPost方法,当不知道是什么方式请求的时候就可以考虑到两种情况。
2、可以改变Servlet的初始化时间
服务器启动的时候自动初始化:
在该servlet的配置时,在<servlet>标签中添加<load-on-startup>0<load-on-startup>
标记容器是否在启动的时候就加载这个servlet。当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;当
是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。正数的值越小,启动该servlet的优先级越高。
三、转发和页面重定向:
1、请求转发——服务器内部跳转
服务端页面A自行将请求发送到别的页面B,由B进行响应输出。这种转发由服务端自行完成。
目标页面B可以获得A之前获得的请求数据“request”。(但这需要api能够传递request和response参数传到目标
页面B)。页面之间相当于能够数据共享。
转发是在服务器内部控制权的转移,客户端浏览器的地址栏不会显示出转向后的地址。
对于javaWeb项目来说,使用request对象可以做到这点。
<%
RequestDispatcher rd=request.getRequestDispatcher("/ 转到的页面");
rd.forward(request,response);
%>
转发之前如果有输出语句,那些内容将被抛弃。
可以通过forward方法将提交信息在多个页面间进行传递。
"/"表示项目的根目录,不加"/"表示当前servlet所在的目录
例:
在这个例子中就用到了转发,当user不等于空时跳转到success.jsp界面,上面一句
的request.setAttribute("username",username)设置的属性值为username 通过键值对的方式发送到转发
的页面,在那边用${username}或者request.getAttribute("username")来获取。
2.重定向
服务端指示浏览器跳转。然后客户端浏览器会重新发起相应的新的internetURL地址请求,从而实现页面转向。
浏览器之前向服务端发送的请求数据 “request中的内容”将不会发送到新的URL中去。
在浏览器地址栏中可以显示转向后的地址。
通过浏览器测试,可以发现浏览器收到过服务器状态码Status Code:302 OK。
对于javaWeb项目来说,response对象的方法void sendRedirect (“/项目名/转到的页面”);可以实现这种重定向。在 这句后,程序员最好立即调return;
才不容易出错。
如果真的发生了重定向,之前如果有输出语句,那些内容将被抛弃。、
注:jsp:forward动作的功能也基本和此功能一致。(jsp:forward是服务器端转发。)
"/"表示项目的根目录,不加"/"表示当前servlet所在的目录,因为重定向后还会执行下面的代码,所以让return
来结束该方法。
浏览器发出两次请求-即该Servlet和“/项目名/转到的页面”地址(自动发出该次请求)
请求重定向是把“/项目名/转到的页面”的地址发给浏览器,让浏览器进行二次请求,所以浏览器的地址是“/项目名/转到的页面”
的地址。
例如:跳转到百度:response.[b]sendRedirect("http://www.baidu.com");[/b]
四、常用的几个路径字符串(重要)
以下几个路径字符串很重要,它们是许多有经验的程序员总结出来的,也是许多大型公司常常在jsp文件头部使用的代码。
<%
(1) String path = request.getContextPath();//当前应用程序名。 如果应用刚好发布为容器的缺省应用(即没有应用名),则这个方法就会返回一个空字符串
//如得到 /test
(2) String basePath = request.getScheme() + "://" + request.getServerName()
+ ":" + request.getServerPort() + path + "/"; //当前应用的全路径(也就是包含进协议和主机名)。 用它拼接上诸如 /css、/js ,就刚好能访问该应用根目录下的静态资源
//如得到 http://www.baidu.com:8080/test (3)String url = request.getRequestURI()+"?"+request.getQueryString();//得到除“协议、主机”之外的仅针对本容器的 统一资源定位符(1)其中request.getRequestURI()得到统一资源定位符,(2)request.getQueryString()得到查询串
//如得到/test/acontroller/b/c.page?x=1&y=2&z=3
(4)String baseurl=request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + url; //当前的网址
//如得到http://www.baidu.com:8080/test/acontroller/b/c.page?x=1&y=2&z=3
%>
相关文章推荐
- JavaWeb核心编程之(三.1)ServletHello
- JavaWeb核心编程之(三.3)Servlet Init 配置
- JavaWeb编程记录:build-impl.xml:1056: 尚未部署该模块
- JavaWeb Servlet编程
- 深入分析JavaWeb 54 -- Spring中的AOP面向切面编程2
- 对JAVA中MVC设计模式、JAVAWEB的三层架构、AOP面向切面编程的总结
- javaWeb编程_Servlet03
- javaweb学习笔记-servlet02
- JavaWeb编程 Servlet的基本配置
- 来自javaweb高级编程的详细的例子--servlet
- javaWeb编程_Servlet01
- Javaweb 编程之SS2H框架整合
- 初学JavaWeb编程过程中遇到的一些问题记录
- JavaWeb学习笔记——Servlet编程
- javaWeb高级编程分页标签代码
- JavaWeb核心编程之(三.5)HTTP请求和接受表单数据
- JavaWeb核心编程之Tomcat安装和配置
- JavaWeb核心编程之(三.4)Servlet Context 配置
- 在javaweb编程中框架的应用和servlet的增删改查优化(用一个servelt)
- 01_JavaWeb编程基础