nullWEB-ServletWEB-Servlet培训师:_oiYc内容提要:内容提要:http协议
servlet概述
第一个servlet小程序
Tomcat详解
servlet配置、servlet生命周期、web.xml详解
servlet重要对象
session && cookie
JSP
EL && JSTL
过滤器(Filter)和监听器(Listener)
实战开发小模块HTTP协议HTTP协议 HTTP原理HTTP原理HTTP(Hyper Text Transfer Protocol)是超文本传输协议。
HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。
浏览器和服务器信息交换过程:
建立连接
发送请求信息
回送响应信息
关闭连接
HTTP协议是一个无状态的协议
HTTP1.1支持持续连接,一次连接可以发送多次请求http工具软件 ------IE ( Http watcher )http工具软件 ------IE ( Http watcher )
http工具软件 ---------火狐:firebug插件http工具软件 ---------火狐:firebug插件 HTTP请求的基本格式 (get)HTTP请求的基本格式 (get)一个完整的请求消息包括:
一个请求行、若干消息头、实体内容
请求行格式:
请求方式 资源路径 HTTP版本号
一个典型的GET方式请求:
GET http://www.baidu.com?name=aaa&password=bbb HTTP/1.1 Host: www.baidu.com Accept:*/* Pragma: no-cache Cache-Control: no-cache Referer: http://www.baidu.com
User-Agent:Mozilla/4.04[en](Win95;I;Nav)HTTP请求的基本格式 (post)HTTP请求的基本格式 (post) POST http://www.baidu.com HTTP/1.1 Host: www.baidu.com Accept:*/* Pragma: no-cache Cache-Control: no-cache Referer: http://www.baidu.com
User-Agent:Mozilla/4.04[en](Win95;I;Nav) Content-Length:45
name=aaa&password=bbb通用消息头
----既可用于请求消息、又可用于响应消息通用消息头
----既可用于请求消息、又可用于响应消息Connection:用于指定处理完本次请求/响应后,是否还要急需保持连接。
Date:产生当前消息的时间。
Pragma:no-cache.
Cache-Control:指示浏览器或服务器缓存的具体策略
Content-Length:表示(请求/响应)正文的长度请求头请求头Accept:浏览器可接受的MIME类型。
Accept-Charset:浏览器可接受的字符集。
Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。
Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。
Connection:表示是否需要持久连接。
Content-Length:表示请求消息正文的长度。
Host:初始URL中的主机和端口。
Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。
User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。 响应头响应头Allow 服务器支持哪些请求
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
(如GET、POST等)
Server处理请求的原始服务器的软件信息
Location 表示客户应当到哪里去提取文档。
Refresh:告诉浏览器过n秒后自动刷新页面
Content-Type 表示实体文档属于什么MIME类型。
Content-Length 返回的实体内容的长度
Last-Modified 文档的最后改动时间。
Content-Location:实体所在的实际位置路径课堂练习(15分钟)课堂练习(15分钟)利用httpwatcher或者firebug查看网络通讯情况。感性认识http协议!Servlet基础Servlet基础 Servlet有关概念Servlet有关概念是一种Web服务器端编程技术。
是实现了”特殊接口”的Java类。
由支持Servlet的Web服务器调用和启动运行。
一个Servlet负责对应的一个或一组URL访问请求,并返回相应的响应内容。B/S和C/S架构B/S和C/S架构C/S:
client/server:客户机和服务器架构。
B/S:
Browser/Server :浏览器和服务器架构。
C/S和B/S架构比较Servlet要点Servlet要点HTML,CSS,JS在浏览器中执行,在服务器端生成。
我们即将学习的serlvet/jsp就是一种在服务器端动态生成HTML/css/js/xml数据的一种技术。
Servlet是实现特殊接口的java类。Jsp本质上是servlet, 所以jsp也是java类。
运行servlet必须在serlvet容器中。说白了,就是servlet必须在服务器上运行。Servlet运行过程Servlet运行过程浏览器发送请求到服务器
服务器根据请求的url,去调用相应的serlvet类。
通过servlet中的打印流对象将生成的HHML数据输出给服务器。
服务器将servlet生成的数据再输出给客户端浏览器安装和启动tomcat服务器!安装和启动tomcat服务器!将TOMCAT压缩包解压。
设置环境变量:
JAVA_HOME: C:\Program Files\Java\jdk1.5.0_11s
进入TOMCAT子目录bin,点击:startup.bat,启动tomcat.
访问:http://localhost:8080/
如果出现tomcat主页,则安装成功。
手动发布项目:
在tomcat子目录:webapps中新建一个文件夹:gg
将web项目的WebRoot目录中所有的内容copy到gg中.
重启tomcat第一个Web项目!(1)第一个Web项目!(1)新建web项目
new Web Project
选择:javaee 5.0
建包
com.sxt.servlet
新建 class:HelloServlet
继承:HttpServlet(javax.servlet.http.HttpServlet)
重写: doGet , doPost方法
在web.xml中配置写好的servlet
课堂练习(20分钟)课堂练习(20分钟)重复老师的操作,写出自己的Servlet!Tomcat详解Tomcat详解 Tomcat目录结构Tomcat目录结构/bin:存放windows或Linux平台上启动和关闭Tomcat的脚本文件
/conf:存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml
/webapps:Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录
/work:存放JSP编译后产生的class文件 发布web项目的两种常用方式!发布web项目的两种常用方式!发布按钮(或者说,通过将项目内容copy到tomcat/webapps/目录下):
发布:直接点击”发布按钮”将开发项目发布到tomcat目录webapps/下面。
访问:项目名+
server.xml(该文件描述了tomcat如何启动服务,即启动时如何加载相关组件):
发布:在server.xml中里面增加一个元素:
访问:path属性+Servlet配置、
Servlet生命周期 、
WEB.xml详解
Servlet配置、
Servlet生命周期 、
WEB.xml详解
Servlet配置详解!Servlet配置详解!的问题
必须以/开头(不然,启动 是会报错:invalid url-pattern ** in servlet mapping)
常见的url 的模式:
/one/*匹配所有one下面的请求
/kk/one匹配one请求
*.one 匹配所有.one结尾的请求
错误写法:/yi/*.one
一个可以对应多个,即多个url可以对应一个serlvet
分析tomcat启动报错,一般情况都是项目的配置文件出错,可以通过查找Caused by 语句得到相关信息。
servlet生命周期!servlet生命周期!载入:第一次请求的时候被初始化,只一遍
初始化:调用init方法,只一遍
执行:每个请求,new一个新的线程,调用一遍
不要在servlet中
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
成员变量(多个请求线程共享,会发生资源冲突问题!)。
doGet,doPost常见异常:
HTTP Status 405 - HTTP method POST(GET) is not supported by this URL:增加doPost()或doGet()方法即可。
销毁:卸载前调用destroy方法。子类servlet一般不需要覆盖这个方法
在非分布的情况下, 通常一个Servlet在服务器中有一个实例web.xml详解!web.xml详解!小练习 :20分钟小练习 :20分钟将课堂上代码重新敲一遍!
Servlet非常重要,务必熟悉!Servlet重要对象Servlet重要对象 HttpServletRequest对象!HttpServletRequest对象!服务器将客户端请求的信息封装在request对象中。
请求行
请求头
实体内容请求行请求行请求头请求头request.getHeader(“content-length ”) 忽略大小写的,相关的头信息名称可以通过Httpwatcher软件查询请求实体(get/post)请求实体(get/post)HttpServletResponse对象!HttpServletResponse对象!服务器端的响应信息被封装在这个对象中
响应信息由response对象传送给web服务器,再由web服务器发送给客户端
构建响应信息
构建响应头
response.setHeader("content-type", "text/html;charset=gbk");
response.addHeader("refresh", "3;url=1.jsp");
构建响应体
response.getWriter() //输出文本使用
response.getOutputStream() //输出非文本使用(比如:下载)课堂练习 20分钟课堂练习 20分钟仔细练习老师课上的代码请求转发和重定向请求转发和重定向请求转发和重定向!(2)请求转发和重定向!(2)Path”/”
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
!Path”/”总结!只要是需要通过浏览器发送请求 的地方(比如HTML代码,sendRedirect方法等),”/”一般代表虚拟主机根目录,即相当于端口号之后的”/”
服务器程序内部跳转,”/”一般代表本web应用根目录。再谈HttpServletRequest对象!再谈HttpServletRequest对象!作为作用域对象
一个请求服务器会new一个request对象。属于同一个请求的所有servlet/jsp共享该对象ServletConfig对象(一般用于处理该servlet在配置文件配置信息)ServletConfig对象(一般用于处理该servlet在配置文件配置信息) ServletContext 对象ServletContext 对象 一个web应用只有一个ServletContext对象。所有的servlet都共享这个ServketContext对象,又称为Application对象,也是一个作用域。
空间:最广,被所有的servlet共享。
时间:最长。从web应用被加载到被卸载都有效
常见用法:
读取web.xml中参数
作用域:setAttribute/getAttribute/removeAttribute
用于获取文件绝对路径:getRealPath(“1.jsp”)
用于获取目录下的所有目录和文件 的路径,返回Set类型: getResoursePaths(“/picture”)
用于获得web应用中的资源: getResourceAsStream("/1.properties")课堂练习20分钟课堂练习20分钟仔细练习老师课上的代码Session&CookieSession&Cookie 保存状态的两种方式 保存状态的两种方式 Session :(服务器端)
适合保存”大量”的数据。
安全。
效率高
Session跟踪机制中需要cookie来保存和传递sessionId
Cookie:(客户端)
不适合保存大量的数据。
不安全。
效率低。
HttpSession!HttpSession!将http状态信息保存在服务器端的技术
HttpSession session = request.getSession();
如果session已经被创建,则返回已经创建的。如果未创建,则创建新的session。一个客户端拥有一个session对象。
取得 :
作用域:被属于同一个会话的请求共享
其他方法:
session.getId() 返回相关联的session的id。
session.setMaxInactiveInterval(6) 以秒为单位设置session的最大空闲时间(也可以在web.xml中中配置空闲时间)。
session.invalidate() 强制session失效。作用域总结作用域总结HttpServletRequest对象
被属于同一个请求的Servlet共享。
HttpSession对象
被属于通用贯彻会话的Servlet共享。
ServletContext对象
被属于本web应用的所有的Servlet共享CookieCookie将http状态信息保存在客户端的技术
不是服务器直接读取本地的cookie,是浏览器读cookie,而服务器读浏览器发出的名为cookie的请求头信息。(通过httpwatcher观察名为cookie的头信息)
取得 :
Cookie cookie = new Cookie(“uname”,“dabao”);
添加多对值,要new多个cookie。
方法:
cookie.setMaxAge(3600*24) ;设置cookie的有效期. 如果不设置有效时间,cookie就不会被增加到客户端硬盘上,只是写到客户端内存中。
setName() setValue()getName() getValue()
响应信息中添加cookie:
response.addCookie(cookie);
取得客户端发来的cookie:
request.getCookies() ;
返回Cookie[]类型的数组,再用getName() getValue()来访问它的Name和Value 读取的不是客户端硬盘或内存中的信息。而是浏览器发送给服务器的请求头Cookie中的信息中文问题的解决!中文问题的解决!post方式提交的数据,采用:
equest.setCharacterEncoding(“gbk”);
get方式提交的数据
在server.xml中元素中增加属性:useBodyEncodingForURI=“true” ,则 上面对get方式提交的数据也有效。
通用方法
new String(str.getBytes(“iso8859-1”),”gbk”);课堂练习 20分钟课堂练习 20分钟完成老师上课敲的代码 输入理解 JSP技术
JSP技术
jsp(Java Server Page)jsp(Java Server Page)为什么需要JSP?
Servlet:
优点:逻辑处理方便
缺点:页面表现麻烦
Jsp
优点:页面表现方便
缺点:逻辑处理麻烦
所以要互补使用.一般项目都采用: jsp+servlet+javabean
(当然,学了ssh后,可以采用ssh框架)Jsp本质Jsp本质Jsp是一种动态网页技术!
动态网页技术:
动态生成网页数据,而不是有动态效果的网页!
常见的几种动态网页技术:
Jsp
Asp(Active Server Page) 微软
Php(Hypertext Preprocessor)超级文本预处理语言
Jsp就是servlet, 所以jsp也是java类,通过jsp引擎把jsp转译成了servlet
jsp= java+html我们的第一个jsp页面!我们的第一个jsp页面!浏览器输入:http://localhost/j314/testjsp/hi.jsp
tomcat收到*.jsp请求,则会到org.apache.jasper.servlet.JspServlet 处理(tomcat的web.xml中有配置)。
JspServlet调用相应的java类,及jsp引擎根据hi.jsp生成的java类(位于:tomcat子目录work下面:hi_jsp.java, hi_jsp.class)。
执行hi_jsp.class。将HTML数据输出给tomcat。Tomcat再将这些数据输出给客户端。 课堂练习(10分钟)课堂练习(10分钟)完成自己的第一个jsp程序!
思考:
Jsp能不能输出二进制信息(比如:img等)JSP语法JSP语法JSP语法分为三种不同的类型
编译器指令
Include, page, taglib
脚本语法
注释: ,<%--…--%>
声明:<%!...%>
表达式:<%=…%>
Java脚本段:<%...%>
动作语法(自学内容)
作业:自学jsp动作语法作业:自学jsp动作语法
JSP编译器指令JSP编译器指令page
<%@ page contentType="text/html; charset=GBK"%>
<%@ page import="java.util.*, java.lang.*" %> <%@ page errorPage="error.jsp" %>
JSP编译器指令JSP编译器指令include
静态导入:
<%@ include file="logo.jsp" %>
是在jsp引擎转译时,就把此文件内容包含了进去(两个文件的源代码整合到一起,全部放到_jspService方法中),所以只生成了一个servlet,所以两个页面不能有同名的变量。
运行效率高一点点。耦合性较高,不够灵活
动态导入:
是在servlet引擎转译后,请求的此页面,所以共生成了两个servlet,所以可以有同名变量。
生成两个servlet,相当于两个类之间的调用,耦合性较低,非常灵活。
JSP脚本语法JSP脚本语法“HTML注释”:
Servlet中会生成,会发给浏览器
“隐藏注释”:<%-- comments --%>
Servlet中不生成,不发给浏览器
“声明”
<%! 声明; [声明; ] ... %>
“表达式”
<%=…%>
“脚本段”
<%...%>内置对象内置对象JSP 有以下九种内置对象,包括:
request,请求对象
response,响应对象
pageContext,页面上下文对象
session,会话对象
application,应用程序对象
out,输出对象
config,配置对象
page,页面对象
exception,例外对象request&&responserequest&&response“request” 对象代表的是来自客户端的请求,例如我们在FORM表单中填
写的信息等,是最常用的对象。关于它的方法使用较多的是getParameter、getParameterNames,
getParameterValues,通过调用这几个方法来获取请求对象中所包含的参数的值.
“response” 对象代表的是对客户端的响应,也就是说可以通过“response”对象来组织发送到客户端的数据。但是由于组织方式比较底层,所以不建议使用,需要向客户端发送文字时直接使用“out” 对象即可
session和application对象session和application对象“session” 对象代表服务器与客户端所建立的会话,当需要在不同的JSP页面中保留客户信息的情况下使用,比如在线购物、客户轨迹跟踪等。
“application” 对象负责提供应用程序在服务器中运行时的一些全局信息,常用的方法有getMimeType和getRealPath等。outout“out” 对象代表了向客户端发送数据的对象,与“response” 对象不同,通过“out” 对象发送的内容将是浏览器需要显示的内容,是文本一级的,可以通过“out” 对象直接向客户端写一个由程序动态生成HTML文件。常用的方法除了print和println之外,还包括clear、clearBuffer、flush、getBufferSize和getRemaining,这是因为“out” 对象内部包含了一个缓冲区,所以需要一些对缓冲区进行操作的方法config、 page、 exceptionconfig、 page、 exception“config” 对象提供一些配置信息,常用的方法有getInitParameter和getInitParameterNames,以获得Servlet初始化时的参数。
“page” 对象代表了正在运行的由JSP文件产生的类对象,一般不建议使用。
“exception” 对象则代表了JSP文件运行时所产生的例外对象,此对象不能在一般JSP文件中直接使用,而只能在使用了“<%@ page isErrorPage="true "%>”的JSP文件中使用 pageContext 页面上下文对象pageContext 页面上下文对象封装了当前jsp页面的运行信息,它提供了返回jsp页面的其他隐式对象的
方法 :
getRequest(), getResponse(), getPage()
getServletContext() , getApplication(), getOut()
getSession(), getException(), getServletConfig()
forward,include方法EL表达式&JSTL标签库EL表达式&JSTL标签库 EL(Expression Language)!EL(Expression Language)!EL 表达式必须以“ ${XXX} ”来表示 ,其中“ XXX ”部分就是具体表达式内容
EL表达式一般操作的是作用域中的属性。EL变量指某一个作用域中的属性。
EL 表达式的默认变量
1》pageScope, requestScope, sessionScope, applicationScope
2》param, paramValues
EL实现变量类型的自动转换EL常用操作符!EL常用操作符!课堂练习(15分钟)课堂练习(15分钟)熟悉刚刚的el表达式语法规则!JSTL概述JSTL概述JSP Standard Tag Library ,JSP标准标签库
常用的子标签库:
核心标签库:http://java.sun.com/jsp/jstl/core 包含 Web 应用的常见工作,比如:循环、表达式赋值、基本输入输出等。
格式化标签库:http://java.sun.com/jsp/jstl/fmt 用来格式化显示数据的工作,比如:对不同区域的日期格式化等。
XML 标签库:http://java.sun.com/jsp/jstl/xml 用来访问 XML 文件的工作,这是 JSTL 标签库的一个特点。
函数标签库:http://java.sun.com/jsp/jstl/functions 用来读取已经定义的某个函数。
数据库标签库:http://java.sun.com/jsp/jstl/sql 可以做访问数据库的工作。Core 标签库 (1)Core 标签库 (1)多用途核心标签:
用于在 JSP 中显示数据
将值存储到作用域或为 JavaBean 中的变量属性赋值
将值zhangsan存储到变量name, name为作用域pageContext中的一个属性。
删除存在于 scope 中的变量
Core 标签库(2)Core 标签库(2)条件控制标签:
使用要点:必须在之前
中除了/不能有其他元素
Core 标签库(3)Core 标签库(3)循环控制标签:
Core 标签库(4)Core 标签库(4)URL 相关标签:
包含另一个 JSP 页面到本页面
作用类似,但是比作用范围广,不仅可以包含本项目下资源,也可以包含外部的资源!
用于页面重定向
用于包含传递参数
课堂练习(20分钟)课堂练习(20分钟)复习jstl标签库基本语法!
重点复习:
条件控制标签
循环标签
Import、param、redirect标签Filter & Listener
(过滤器和监听器)Filter & Listener
(过滤器和监听器) Servlet程序的主要分类?什么是过滤器?Servlet程序的主要分类?什么是过滤器?标准servlet(jsp) ==> MVC
过滤servlet(过滤器) Filter
监听servlet(监听器)Listener
---------------------------------------------------------------------------------------
过滤:安全,干净,过滤掉东西
过滤器应该是一种后加入的东西:
香烟 =>纸=>烟草 :在香烟之上加上过滤嘴
人=>过滤嘴=>吸烟过滤器在web中主要起什么作用?过滤器在web中主要起什么作用?1 过滤器是程序运行之后加入的内容
2 功能:
(1)任何网站都需要对用户是否登录进行过 滤(是在每个jsp页面之后判断session)
(2)网上聊天系统,屏蔽非法文字
(3)对请求内容进行统一编码
(4)对于权限分配的校验,记录操作日志等等
(5)加密
(6)数据压缩
注:以上功能都是自动执行的如何实现过滤器?如何实现过滤器?在所在的类实现Filter接口
public interface Filter:
主要方法:
public void init(FilterConfig cfg)
ServletException throws
public void destroy();
过滤处理信息内容的主要方法:
public void doFilter(ServletRequest request,
ServletResponse response,FilterChain chain)
throws IOException , ServletException;Filter要点一Filter要点一Filter是在容器初始化时自动初始化的
filter是在servlet/JSP执行前后都会执行,chain.doFilter(request, response)之前的代码在servlet/JSP之前执行,chain.doFilter(request, response)之后的代码在servlet/JSP之后执行
整个流程是客户端发出请求后,先执行filter里面dofilter方法的chain.doFilter之前的代码,然后通过chain.doFilter调下一个filter,如果没有下一个,则调用客户端请求的servlet/JSP。然后倒着执行每个filter里面chain.doFilter(request, response)之后的代码。Filter要点二Filter要点二过滤器截获对特定命名的一个资源和一组资源的请求(request),然后执行过滤器中的代码。对于特定的资源,可以指定按照一定顺序调用的一个和多个过滤器,这就组成了链(chain)。使用过滤器主要包括:
编写过滤器类
定制请求(request)和响应(response)
为特定的Web资源指定过滤器链FilterConfigFilterConfig可以从FilterConfig对象中获得初始化参数。
在doFilter()方法中,过滤器可以从访问存储在ServletContext中的属性对象,也可以在filter里配置init-param参数。例如可以在init方法中获取config 然后获取init-param属性 ,当过滤器完成特定的处理过程后,调用chain对象的doFilter()方法。示例:(01)示例:(01)public void init(FilterConfig config) throws ServletException {
FilterConfig config=this.config;
String encoding = config.getInitParameter("encoding");
} 配置文件:
FilterOne
com.sxt.filter.FilterOne
encoding
gbk
示例:(02)示例:(02)web.xml配置Filter,在部署描述文件中加入标记 ,此标记包括:
:过滤器名称
:过滤器的实现类
:过滤器的初始参数
Compression Filter
CompressionFilter
compressionThreshold
10
示例:(03)示例:(03)在部署描述文件中加入标记,映射过滤器到Servlet:
Compression Filter
CompressionTest
REQUEST
FORWARD
INCLUDE
只拦截动态导入
ERROR
Filter注意事项:Filter注意事项:只有当request直接来自客户,过滤器才生效,对应为REQUEST条件。
只有当request被一个请求分发器使用forward()方法转到一个Web构件时,对应称为FORWARD条件。
只有当request被一个请求分发器使用include()方法转到一个Web构件时,对应称为INCLUDE条件。
只有当request被一个请求分发器使用“错误信息页”机制方法转到一个Web构件时,对应称为ERROR条件。
第五种过滤器作用的条件可以是上面四种条件的组合。
当不使用dispatcher元素时,客户的直接request会被用来过滤请求。如果请求是从一个request dispatcher转发过来的,这个过滤器不工作Listener监听器Listener监听器监听器概述
1.Listener是Servlet的监听器
2.可以监听客户端的请求、服务端的操作等。
3.通过监听器,可以自动激发一些操作,如监 听在线用户数量,当增加一个HttpSession 时,给在线人数加1。
4.编写监听器需要实现相应的接口
5.编写完成后在web.xml文件中配置一下,就可以起作用了常用的监听接口常用的监听接口应用事件模型提供了当ServletContext,HttpSession,ServletRequest状态改变时的通知功能。可以编写事件监听类来响应这些状态的改变,并且可以配置和部署应用事件和监听类到Web应用。
对于ServletContext事件,当Web应用部署、卸载和对context增加属性时,事件监听类可以得到通知。下表列出了ServletContext的事件类型,对应特定事件的监听类必须实现的接口和当事件发生时调用的方法。配置事件监听类的步骤:配置事件监听类的步骤:打开Web应用的部署描述文件web.xml
增加事件声明标记。事件声明定义的事件监听类在事件发生时被调用。标记必须在和标记之后和标记之前。[注意位置!!!]可以为每种事件定义多个事件监听类,Apusic应用服务器按照它们在部署描述文件声明的顺序调用。例如:
com.puckasoft.video.servlet.TestSessionListener
编写和部署监听类应用小模块实战开发应用小模块实战开发 小模块的编写:(分组讨论 30分钟)小模块的编写:(分组讨论 30分钟)需求:要求编写员工和岗位信息模块。
每个员工只能有一个岗位 ,而每个岗位可以有多个员工 ,
员工有以下信息:
姓名(name),年龄(age),性别(sex),生日(birthday),联系方式(tal)
家庭住址(address),所属岗位(***)
岗位有以下信息:
岗位名称(name),岗位表述(description)
任务:
要求在岗位添加页面中可以选择多个员工,并完成他们增删改查的全部操作,要求是标准的分层结构,独立完成CRUD的反射封装。
nullnull