JavaEE概述和servlet基础.ppt
JavaEE概述和Servlet基础,2,阶段项目展示,E-Book电子书店系统演示,演示项目案例:E-Book电子书店系统,3,相关内容回顾,如何理解B/S系统?B/S系统相对C/S系统的优点是什么?如何通过HTML提交数据给JSP?在JSP中如何获得HTML提交的数据?JSP文件的组成部分有哪些?,4,本讲问题,计算机之间通过什么方式进行数据传递?在学习JSP之后,为什么还要学习JavaEE?自行车与组装自行车我们上课用的桌椅,5,掌握JavaEE的体系结构掌握JavaEE的技术内容掌握JavaEE的分层结构理解并掌握HTTP请求和响应,本讲目标,6,为什么学习JavaEE,1、使用JSP技术编写动态网页的时候,遇到了哪些问题?,在JSP页面上嵌套大量的Java代码,不易维护,当业务需求发生变化的时候,不易扩展,我们的网站现在需要进行一些改动,把原来的改成,项目已经开发的很好了,但是我们想增加功能,7,什么是JavaEE,JavaSE,JSP,Servlet,JavaBean,EJB,JDBC,JNDI,XML,Struts,Hibernate,JSF,解决方法:JavaEE的使用定义:JavaEE(Java Platform Enterprise Edition)是一个开发分布式企业级应用的规范和标准。,Spring,Web Service,8,JavaEE与后续课程关系,Struts、Hibernate、Spring,它们都是框架框架,即Framework。其实就是某种应用的半成品,就是一组组件,用来完成自己的系统。简单说就是使用别人准备好的一切,来实施自己的项目。,毛坯房就类似一个框架,毛坯房,装修后的房子,可以按照自己的意图装修,Java EE,Struts,Hibernate,Spring,应用程序,JavaEE是基础,JavaEE与后续课程关系,9,JavaEE体系结构,JavaEE分层结构表示层-HTML页面中间层-Servlet等组件数据层-Database(JDBC、JNDI等),表示层,中间层,数据层,平房式服务机构,楼房式服务机构,服务机构(银行)办公区域结构,所有工作区域都在一起,结构清晰管理方便,一层:服务大厅,二层:办公室,三层:资料室,比对,10,JavaEE体系结构,JavaEE体系结构-三层体系结构,表示层,中间层,Web 服务器,数据层,数据库,11,表示层技术,页面显示技术HTMLJavaScriptAjax技术,页面显示技术 function test()alert(document.form1.username.value);,JavaScript的用法,HTML的FORM表单,12,中间层技术,请求,Servlet,JavaBean,JSP页面,执行,调用,转向,响应,JSTL,使用,Servlet、JSP与JavaBean,访问,返回数据,数 据 库,客户端,13,中间层技术,JSP显示动态内容的服务器网页JSTL辅助JSP显示动态内容的标准标签库Servlet接收客户请求,并作出响应的Java程序Servlet是中间件技术的重要部分,它控制着其他的组件JavaBeanJavaEE的模型组件中间层框架技术Struts框架Struts框架主要是扩展了Servlet,强制执行MVC模式,14,数据层技术,JDBC技术JDBC(Java Database Connectivity):Java 数据库连接JDBC用来访问数据库和操作数据库表中数据数据层框架技术Hibernate,JavaBean,数 据 库,JDBC访问,返回数据,Hibernate,数 据 库,访问,返回数据,JavaBean,15,E-Book电子书店系统,前台用户模型,重点购物车的实现使用的技术Servlet、HttpSession、JDBC、JSTL,演示系统结果,16,HTTP协议的定义,HTTP协议 超文本传输协议无状态协议不用记录谁发出的请求,只需给出响应适用于传输文件用于通过 Internet 发送请求消息和响应消息使用端口接收和发送消息,默认为80端口,我想同其他“人”交流,怎么办?,我只会我们计算机自己的语言,对了,我可以使用HTTP协议和“别人”交谈了,双方进行交谈,提问,回答,17,HTTP协议的演示,在MyEclipse中创建项目点击菜单“文件”“新建”“项目”选择“Web Project”“下一步”写入工程名称,Root URL 改为“/books”“完成”创建index.html和test.jsp,18,HTTP协议的演示,数据的提交和接收,index用户名:密 码:,HTML文件的FORM表单,test你输入的用户名是:你输入的密码是:,获取客户端录入数据,index.html,Test.jsp,19,本讲问题,Servlet与JSP之间的关系?页面跳转有哪几种方式?如何理解Servlet的生命周期?,20,本讲任务,使用Servlet实现E-Book电子书店用户认证如果用户名或密码错误,返回到登录页面(register.jsp)在名为Welcome的Servlet中进行验证控制转向如果输入数据正确,显示正确登录页面(ok.jsp)如果输入数据不正确,显示错误页面(failure.jsp),21,理解Servlet的生命周期会使用Servlet处理Get/Post请求会使用Servlet处理页面的转向会配置web.xml文件,本讲目标,22,为什么需要Servlet,使用JSP技术如何编写服务器动态网页?,在JSP技术出现之前如何编写服务器动态网页?,请求,响应,JSP 页面,运行,执行,Java代码,HTML代码,生成,JSP 使用 Java 生成动态内容,运行,Servlet程序,23,什么是Servlet,定义:Servlet 是一个 Java程序,是在服务器上 运行以处理客户端请求并做出响应的程序,请求,响应,Servlet 运行于服务器端,24,什么是Servlet,初识Servlet,import java.io.*;import javax.servlet.*;import.*;public class HelloServlet extends HttpServlet public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException response.setContentType(text/html;charset=gb2312);PrintWriter out=response.getWriter();out.println();out.println(Servlet);out.println();out.println(你好,欢迎来到Servlet世界);out.println();out.println();out.close();,继承HttpServlet类,Servlet输出HTML标签和内容,导入所需的包,处理请求的方法,将数据发送给客户端,25,Servlet与JSP关系,Servlet与JSP之间的关系JSP在服务器上转译的文件,out.write(rn);out.write(rn);out.write(MyJsp.jsprn);out.write(rn);out.write(rn);out.write(This is my JSP page.rn);out.write(rn);out.write(rn);,MyJsp This is my JSP page.,MyJsp.jsp,MyJsp_jsp.java(.jsp转译后的.java文件),JSP转译后的.java文件与Servlet的处理方式一样,Servlet是JSP技术的基础,演示示例1:Tomcat下MyJsp_jsp.java,26,如何创建Servlet,前台页面的创建FORM表单的编写后台Servlet的创建使用MyEclipse的Servlet向导创建Servlet代码模板根据表单提交方法,确定接收方法接收请求数据、处理数据、返回响应页面,27,FORM表单的method属性,FORM表单提交的方法Get和Post,MyJsp This is my JSP page.,MyJsp,FORM的方法有哪些?,Get|Post,Get 与 Post有什么区别?,Get、Post提交数据与Servlet有什么关系吗?,28,使用向导创建Servlet,在MyEclipse下如何创建Servlet在MyEclipse下如何创建Servlet首先在缺省包(src)下创建包在上述包中使用向导创建Servlet,演示示例2:创建Servlet步骤,29,Servlet编程模式,Servlet编程基本模式处理Get和Post请求,import;import javax.servlet.*;import.*;public class HelloServlet extends HttpServlet public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException/doGet方法体内容 public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException/doPost方法体内容,使用Get方法提交,触发doGet()方法,使用Post方法提交,触发doPost()方法,30,Servlet编程模式,Servlet编程基本模式Servlet如何接收数据,import;import javax.servlet.*;import.*;public class HelloServlet extends HttpServlet public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException/doPost方法体内容,参数为表单元素名称,接收数据与JSP相同,如果是使用Get方法提交数据,String userName=request.getParameter(userName);String userPass=request.getParameter(userPass);,/doGet方法体内容,如果是使用Post方法提交数据,doPost(request,response);,31,Servlet编程模式,Servlet编程的基本模式根据结果,转向其他页面或资源,import;import javax.servlet.*;import.*;public class HelloServlet extends HttpServlet public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException String userName=request.getParameter(userName);String userPass=request.getParameter(userPass);if(userName.equals(sa),使用response重定向到其他页面,与JSP相同,32,Servlet的生命周期,Servlet的生命周期由Servlet容器(如:Tomcat)控制容器如何处理请求,HTTP请求,容器,请求,响应,1,2,Servlet实例,Servlet,通过URL找到,执行,service(请求,响应),3,4,doGet(请求,响应),5,响应,6,33,Servlet的生命周期,生命周期的各个阶段,实例化,Servlet 容器创建 Servlet 的实例,初始化,该容器调用 init()方法,服 务,如果请求 Servlet,则容器调用 service()方法,销毁实例之前调用 destroy()方法,销 毁,34,生命周期相关方法,public class HelloServlet extends HttpServlet public void init()throws ServletException(初始化时第一次调用!);public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException response.setContentType(“text/html;charset=gbk”);PrintWriter out=response.getWriter();out.println();out.println(HelloServlet);out.println();out.println(你好,Mary!+new Date();out.println();public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException doGet(request,response);public void destroy()(释放资源!);,初始化方法,doGet()方法,doPost()方法,销毁方法,35,程序演示,运行HelloServlet启动Tomcat服务在地址栏内输入:http:/localhost:8080/books/HelloServlet运行结果,演示示例3:HelloServlet,36,现场编程,请使用Servlet编写在页面显示“你好,Mary!”的程序代码,public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException response.setContentType(text/html;charset=GBK);/设置中文 PrintWriter out=response.getWriter();/使用输出流,向客户端输出信息 out.println();out.println(HelloServlet);out.println();out.println(“你好,Mary!);out.println();out.println();out.flush();out.close();,37,常见错误,如果程序运行结果如下:,出现了乱码,什么原因呢?,public class HelloServlet extends HttpServlet public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException response.setContentType(text/html;charSet=GBK);/设定中文PrintWriter out=response.getWriter();/使用输出流,输出信息,设定中文的语句,哪里有错误吗?,charset而不是charSet,38,Servlet的部署,每个Servlet为一个组件,必须部署到Tomcat中才能运行与JSP相同在Tomcat中部署部署要遵守容器特定的规定,39,Servlet的部署,在Tomcat中如何部署,tomcat,webapps,books,WEB-INF,index.html,test.jsp,lib,classes,*.jar,HelloServlet.class,web.xml,显示页面,第三方jar文件,.java编译后的.class文件,程序配置文件,必须的,tomcat主目录,文档根目录,40,Servlet的配置,在web.xml文件中配置Servlet如何访问Servlet,HelloServlet j16.HelloServlet HelloServlet/HelloServlet,两个名称必须相同,为了方便使用Servlet,取个别名,完整的包名+类名,访问Servlet的URL,41,常见错误,web.xml文件常见错误servlet-mapping中的name与servlet-name中的name不一致添加多个mapping映射,Helloservlet y2javaee.sg.ch02.HelloServlet HelloServlet/HelloServlet,请指出哪里有错误?,servlet-name不一致,HelloServlet y2javaee.sg.ch02.HelloServlet HelloServlet/HelloServlet HelloServlet/HelloServlet2,多余的mapping,请指出哪里有错误?,42,转向控制,数据的传递方式从页面到Servletrequest.getParameter(param);从Servlet到Servlet或JSP页面RequestDispatcher对象的forward()方法JSP的forward动作实质是RequestDispatcher技术,String pass=request.getParameter(password);String user=request.getParameter(loginName);if(user.equals(accp),定义一个转发器,进行转发,存储要传递的数据,43,常见错误,运行j16文件夹下register.jsp修改方法,错误在哪里?,没有上下文根路径,把路径写全,44,总结,如何理解Servlet程序?Servlet的作用是什么?request、response对象有哪些常用方法?实现页面跳转有几种方式?它们之间有哪些区别?如何理解Servlet的生命周期?web.xml文件在Web项目中的作用是什么?,