【左京淳的JAVA WEB学习笔记】第二章 Servlet

Servlet是对应客户端(浏览器)的窗口

上一章为了简单测试专案的基本框架是否架好,我们直接用网址拜访了jsp网页。
不过在实际的网站中,这种拜访有安全问题。
正确的方式是用网址访问Servlet,再由Servlet指派合适的网页给使用者。
也就是客户只能跟窗口接洽,不能随意联络其他内部员工,不然会坏了规矩。

试着帮空壳网站弄个窗口出来吧!
在Java Sources->src里面新增一个包(package),命名为com.aaa.action
src是放置各种JAVA档案的地方,可以在里面开发各种具有功能的JAVA档案。
这些档案写好了之後,透过挂载(新增专案时)或Publish(修改内容时)到Tomcat服务器,会自动被转换成可执行档。
在src下面,为了开发方便会使用资料夹来区分各类档案,也就是包(package)。
包的名称全都是小写,用"."作为分隔符。
com表示使用范围是国际,aaa表示公司名称,action则是表示专门放置servlet(窗口)的资料夹。
如果公司名下有许多专案,可以在公司名後面多加一节专案名称。例如:
com.aaa.firstproject.action

首先先把各种包建立起来,如果以餐厅来比喻一个网站的话,以下是各个包应放置的人员。
com.aaa.action (餐厅经理)
com.aaa.biz (厨师,依照业务逻辑"料理"各种资料)
com.aaa.dao (跑腿小弟,被厨师呼唤时就要去冰箱(资料库)拿菜)

在com.aaa.action包下建立HelloSvl,这是负责hello world页面的经理。
使用servlet的预设模板可以省点工,如下:
new->servlet
它会预设继承HttpServlet类,相当於是接受过基本的经理培训,具有经理所需的基本技能。

传统的Servlet需要在WEB-INF的web.xml(类似员工名簿)里面登记才能发挥功用。
不过假如一间公司里面几百个员工,有任何变动都要写名簿的话就很麻烦。现在可以直接使用扫描的方式。
刚刚新建的HelloSvl档案里,在class定义的前面有一行@WebServlet("/HelloSvl")
这个就是供扫描用的识别标签,服务器会自动扫描所有具有特定标签的档案并登录。

弄好了经理之後,再弄个厨师手下给他。
在com.aaa.biz包下new->class

package com.aaa.biz;

public class HelloBiz {
  public String say(String name) {

  } 
}

刚刚的经理只有空壳,再追加一下呼叫厨师的方法。改写doGet方法如下:

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //新建一个厨师的实例,建好後IDE会提示你找不到这个类,需要import,点选import即可。
    HelloBiz biz = new HelloBiz(); 
    //把从客人来的资讯传递给厨师,让他处理後回传。
    String msg = biz.say("Tom"); 
    //request是个好用小提包,可以在网页和後台之间传递资料。里面的属性名称可以自订。
    request.setAttribute("clientName", msg); 
    //把从厨师那拿到的菜传给指定的服务生(jsp页面)上菜。
    request.getRequestDispatcher("/main/hello.jsp").forward(request, response); 
  }

回到Hello.jsp档案,把刚才写死的文字改为後台传来的资料。
从"Hello world"改为 ${clientName}
※ ${}是EL表达式,可以叫出request里面的属性。

万事俱备後,在server上点右键选publish,把刚刚写好的後台程序们更新到服务器上,然後打开推进器..
http://localhost:8080/Hello/HelloSvl

如果不用EL表达式,也可以直接在JSP页面使用JAVA语法取得资料如下:

<%=request.getAttribute("clientName") %>

※ <%%>表示JAVA程序码
※ 修改JSP页面不需要重启服务器或publish之类的,只要重刷页面就可以。

到此为止简单的网站已经可以运作了,整理一下重点:

  1. 不需要引用任何jar包就可以运行网站,所有的jar包都是视需求再追加的。
  2. 不需要连资料库。由於分层开发的关系,在尚未建立起资料库之前,用一些写死的文字列代替实际资料也可运行网站。
  3. 在Tomcat服务器上挂载专案资料即可运行。不过前提是这专案没有红色XX(表示错误),例如前一章java build path没设定之类的。

web专案下的资料夹结构

所有JAVA档案都放在java resources->src下面。
它是个source folder,意思是当专案被挂载到Tomcat上时,这个资料夹里的档案会被编译然後放在WebContent里的WEB-INF资料夹里。
要反映修改後的档案时,使用服务器的Publish功能进行更新。

WebContent就是放置整个网站内容的资料夹。
除了预设的META-INF和WEB-INF拿来放设定档和写好的程序以外,其他在WebContent的内容都可以被直接访问。
里面可以放一些图片、文字等静态资料,或是JSP页面之类的,透过url网址访问。例如:
http://localhost:8080/Hello/main/hello.jsp
http://localhost:8080/Hello/pic/pictureA.jpg
http://localhost:8080/Hello/memo.txt

这些资源由於不需要被编译,因此如果有修改也不须重启服务器和Publish。
只要重新整理页面,服务器就会重新读取它们(※jsp页面的修正不用重启服务器)。


<<:  【左京淳的JAVA WEB学习笔记】第一章 软件下载与设定

>>:  Day8:如果怎样就怎样

第24天~Firebase

Firebase是Firebase, Inc.在2011年发布的行动和网路应用程序开发者平台,在20...

[ Day 2 ] - 变数与型别(二)

变数与型别(二) 变数 简单回顾一下,变数的宣告方式 let catNum = 3; 用比较口语的方...

Day 10 Dart语言-混合及泛型

混合mixins 介绍:mixin是一种可以把自己的方法提供给别的类别使用,却不需要成为其他类别的父...

OVN 介绍

本系列文章同步发布於笔者网站 前几篇笔者介绍了 OpenStack 在使用 Linux Bridge...

Day-13 Miku Memory

Miku Memory tags: IT铁人 虚拟记忆体(Virtual Memory) 前面说到了...