1、J2EE架构与程序设计,主讲:李伟刚西北工业大学软件与微电子学院,第二章 J2EE Web应用开发方法,主要内容,B/S编程模式简介HTML和HTTP动态web编程初识Servlet & JSPMVC设计模式初步讨论,B/S编程模式简介,Web服务器Web服务器接收客户端的请求并将结果返回客户端结果:HTML页面、图片、文件、,B/S编程模式简介,Web客户端Web客户端可以使用户向服务器提出请求,并向用户展现请求的结果浏览器知道如何与服务器通信,并能够解释HTML代码并展现Web页。,HTML和HTTP,请求/响应方式HTML告诉浏览器怎样为用户显示内容HTTP是客户端和浏览器在Web上通信
2、的协议服务器使用HTTP向客户端发送HTMLHTMLHTTP基于TCP/IP协议HTTP请求包括:HTTP方法(执行的动作)、访问的页面URL、表单参数HTTP 1.1 method告诉服务器请求的类型,剩余的消息是如何被格式化的GET, PUT, POST, TRACE, DELETE, OPTIONS, HEAD, CONNECTGET是最简单的请求,它向服务器获取一个资源并将之发回可以用HTTP GET向服务器发送少量的数据一个GET例子,HTML和HTTP,HTML和HTTP,POST向服务器请求资源,同时可以发送一些表单数据一个POST例子,HTML和HTTP,HTML和HTTP,发
3、送数据用POST不用GET的理由数据大小:GET中的字符量按服务器不同有限制安全性:用GET发送的数据被附加到URL后面,任何人可以看到。不适于发送敏感数据HTTP响应包括:状态码(请求是否成功)、内容类型(text/picture/HTML,etc)、内容(实际的HTML, image, etc),HTML和HTTP,动态web编程,常见的两种动态Web需求动态内容在服务器上储存数据基本原理,用户点击一个URL链接到一个web服务器应用程序,而不是静态页面,Web服务器应用程序“看到”该请求是给一个帮助程序的,所以web服务器加载并执行该程序。Web服务器应用程序同时以GET或POST形式发
4、送参数,帮助程序构建页面并以HTML发送回服务器,关闭帮助程序,客户端获得HTML页面,显示动态内容,初识Servlet & JSP,First servlet, lets do it!建立文件目录结构编写FirstServlet.java代码,并放到src目录中,FirstServlet.java,web.xml,初识Servlet & JSP,编写部署描述符文件web.xml,放在etc目录中每个web应用都有一个部署描述符文件(DD)一个DD可以定义多个servlets将元素绑定到元素是Java类是客户端用于请求servlet的名字,初识Servlet & JSP,编写部署描述符文件we
5、b.xml,放在etc目录中在tomcat目录下建立目录树在project1目录下,编译servlet拷贝FirstServlet.class至WEB-INF/classes拷贝web.xml至WEB-INF中启动Tomcat打开浏览器到如下网址:http:/localhost:8080/ch1/Serv1,FirstServlet.java,初识Servlet & JSP,How to if JSP,初识Servlet & JSP,Servlet containerservlet没有main()方法,被容器控制容器将HTTP请求和响应传给servlet,并调用servlet上的方法,如doP
6、ost()或doGet()servlet容器提供的服务通信支持Servlet可以通过容器与web服务器通信程序员不需自己建立ServerSocket,监听端口,创建流等寿命周期管理容器控制servlet的“生死”容器负责加载类、实例化和初始化servlet、调用servlet方法、对servlet实例进行垃圾回收等工作多线程支持容器根据对servlet的请求,自动创建Java线程开发者仍要处理线程安全问题声明式安全用XML部署描述符配置安全,无需硬编码JSP支持将JSP转化成Java代码,初识Servlet & JSP,用户点击指向servlet的链接,容器看到请求的是servlet,所以创建
7、HttpServletResponse和HttpServletRquest两个对象,容器根据URL发现正确的servlet,为请求创建或分配一个线程,并将请求和响应对象传给servlet线程,初识Servlet & JSP,容器调用servlet的service()方法,根据请求的类型,service()方法调用doGet()或doPost()方法,doGet()方法创建动态网页并将网页内容填充到响应对象中。容器仍保留响应对象的引用,线程结束,容器将响应对象转换成HTTP响应,并发送到客户端,然后删除请求和响应对象,初识Servlet & JSP,The code容器怎样找到servlet?,
8、初识Servlet & JSP,容器怎样找到servletServlet狡兔三窟客户端名:URL /register/registerMe部署名:内部保密 EnrollServlet真实名:文件 SignUpServlet.classServlet映射机制提高了应用程序的柔性和安全性!,初识Servlet & JSP,The DD,初识Servlet & JSP,DD的好处基本不需要修改经过测试的代码可以利用DD优化应用程序性能,甚至不写任何代码使应用程序能够适应不同的资源,如数据库,不需要重新编译和测试代码使得维护动态安全性变得非常容易,如ACL和安全角色可以让非程序员修改和部署web应用程
9、序,而程序员关注更重要的事,MVC设计模式初步讨论,模式说明,VIEW负责展现。它从控制器获取模型的状态,并将用户输入传回控制器,CONTROLLER从请求获得用户输入,并告诉模型自我更新,使视图(JSP)获得新的模型状态,MODEL保存实际的业务逻辑和状态,它知道获得和更新状态的规则,如购物车内容就是模型。模型与数据库进行通信。,MVC设计模式初步讨论,特点MVC将业务逻辑从servlet中分离,放到模型(Model)中。模型是可复用的POJO,是业务数据(如购物车状态)和操作这些数据的方法(规则)的组合。多个视图可共享一个模型控制器可以连接不同的模型与视图增强了软件健壮性和复用性,思考与讨论题,HTTP请求和响应消息的格式是什么?HTTP POST和GET方法的异同?动态网页的基本原理?Servlet容器的作用及其处理客户端请求的过程?简述MVC设计模式的基本思路,学习动物精神,11、机智应变的猴子:工作的流程有时往往是一成不变的,新人的优势在于不了解既有的做法,而能创造出新的创意与点子。一味 地接受工作的交付, 只能学到工作方法 的皮毛,能思考应 变的人,才会学到 方法的精髓。,学习动物精神,12、善解人意的海豚:常常问自己:我是主管该怎么办才能有助于更好的处理事情的方法。在工作上善解人意, 会减轻主管、共 事者的负担,也 让你更具人缘。,谢谢大家!,