您的位置:首页 > 编程语言 > Java开发

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

%>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息