网站开发 请示,发布网站建设信息,南宁太阳能网站建设,寻找客户的12种方法一个好的Web应用#xff1a; 功能完善、易于实现和维护易于扩展等的体系结构
一个Web应用通常分为两个部分#xff1a;
1. 由界面设计人员完成的表示层#xff08;主要做网页界面设计#xff09;
2. 由程序设计人员实现的行为层#xff08;主要完成本Web应用的各种功能…一个好的Web应用 功能完善、易于实现和维护易于扩展等的体系结构
一个Web应用通常分为两个部分
1. 由界面设计人员完成的表示层主要做网页界面设计
2. 由程序设计人员实现的行为层主要完成本Web应用的各种功能
Web开发的两种常用模式 Web开发的两
Model1 纯JSP或JSPjavabean
适用于小型的Web应用
模型1可以分为两种方式 1. 完全使用JSP页面 优点简单所见即所得容易实现 缺点访问数据库的代码需要写在JSP页面中如果数据库发生变化JSP页面需要重写 2.使用JSPJavaBean 优点数据访问代码和JSP页面分离数据访问代码重用性好 缺点系统复杂时JSP页面中仍会包含大量脚本代码代码开发和维护困难 Model2 MVC模式 该模型是一种将应用分解成三个独立部分的通用模型。 这三个部分分别是 模型(Model) 描述系统的数据 视图(view) 数据的显示包括图形、文本和文件输出等 控制器(Controller) 获取系统的输入控制系统的执行 MVC 是 Model-View-Controller 的缩写 Model代表的是应用程序的商业逻辑 通过 JavaBean 、 EJB 等组件实现 View提供可交互的客户界面 向客户显示模型数据使用 JSP 来输出 HTML Controller响应客户的请求 根据客户的请求操纵模型并把模型的响应结果由视图展现给客户 通常是 Servlet ; MVC好处 各司其职互不干涉 在MVC 模式中三个层各司其职所以如果一旦哪一层的需求发生了变化就只需要更改相应的层中的代码而不会影响到其它层中的代码。 有利于开发中的分工 在MVC 模式中由于按层把系统分开那么就能更好的实现开发中的分工。网页设计人员可以进行开发视图层中的 JSP 对业务熟悉的开发人员可开发业务层而其它开发人员可开发控制层。 有利于组件的重用 分层后更有利于组件的重用。如控制层可独立成一个能用的组件视图层也可做成通用的操作界面。 MVC 有助于把应用分离成合理的组件以方便开发 MVCServlet、JSP、JavaBean相结合 Servlet扮演控制者的角色接受客户请求 创建 JavaBean 由 JavaBean 执行业务逻辑 向 Servlet 返回结果。 Servlet 将结果交给 JSP 页面 由 JSP 页面生成 HTML 向客户返回结果 。 MVC 模式的核心思想是有效地组合“视图”、“模型”和“控制器”。 掌握该模式对于设计合理的 Web 应用以及学习使用某些流行的 Web 框架如 Hibernate Spring Struts等都有着十分重要的意义。 MVC 是一种通过三个不同部分构造一个软件或组件的理想办法 模型 Model —— 用于存储数据的对象。 视图 View —— 为模型提供数据显示的对象。 控制器 Controller ——负责具体的业务逻辑操作即控制器根据视图提出的要求对数据做出处理并将有关结果存储到模型中同时负责让模型和视图进行必要的交互当模型中的数据变化时让视图更新显示。 在 JSP 技术中“视图”、“模型”和“控制器”的具体实现如下 模型 Model 一个或多个 JavaBean 对象用于存储数据 JavaBean 主要提供简单的 setXXX () 方法和 getXXX () 方法在这些方法中不涉及对数据的具体处理细节。 视图 View 一个或多个 JSP 页面为模型提供数据显示 JSP 页面主要使用 HTML 标记和 JavaBean 标记来显示数据 控制器 Controller 一个或多个 Servlet 对象根据视图提交的要求进行数据处理操作并将有关的结果存储到 JavaBean 中然后 Servlet 使用重定向方式请求视图中的某个 JSP 页面更新显示。 在 JSPJavabean 模式中由 JSP 页面通过使用 useBean 标记 jsp:useBean id 名字 class 创建 bean 的类 scope 生命周期 / 创建 Javabean 。 JSP 中的 MVC 模式中也可以由控制器 servet 创建 Javabean 并将有关数据存储到所创建的 Javabean 中然后 servlet 请求某个 JSP 页面使用 Javabean 的 getProperty 动作标记 jsp:getProperty name 名字 propertybean 的属性 / 显示 Javabean 的中的数据。 在 JSP 中的 MVC 模式中非常重要的手段是由 servlet 负责用构造方法创建 Javabean 因此允许创建 Javabean 的类可以有带参数的构造方法。 在 JSP 中的 MVC 模式中 servet 创建的 Javabean 也涉及到生命周期 ( 有效期限 ) 生命周期分为 request 、 session 和 application 。以下假设创建 Javabean 的类的名字是 BeanClass 该类的包名为 user.yourbean 。 request周期的Javabean 1 Javabean的创建 servlet 负责创建 bean 。那么创建生命周期为 request 的 bean 的步骤如下 1 用 BeanClass 类的某个构造方法创建 bean 对象 例如 BeanClass beannew BeanClass (); 2 将所创建的 bean 对象存放到 HttpSerletRequest 对象 request 中并指定查找该 bean 的关键字该步骤决定了 bean 的生命周期为 request 。 例如 request.setAttribute ( keyWord ,bean); 执行上述操作就会把 bean 存放到 Tomcat 引擎管理的内置对象 pageContext 中该 bean 被指定的 id 是 keyWord 生命周期是 PageContext.REQUEST_SCOPE request 。 2 视图更新 servlet 请求一个 JSP 页面比如 show.jsp 的代码如下 RequestDispatcher dispatcher request.getRequestDispatcher ( show.jsp ); dispatcher.forward ( request,response ); servlet 所请求的 JSP 页面可以使用如下标记获得 servlet 所创建的 bean 的引用 type 属性使得该 JSP 页面不负责创建 bean jsp:useBean id keyWord type user.yourbean.BeanClass scoperequest/ 该标记中的 id 是 servlet 所创建的 bean 索引关键字。然后 JSP 页面使用 jsp:getProperty name keyWord propertybean 的变量 / 标记显示 bean 中的数据。如果上述代码执行成功用户就看到了 show.jsp 页面的执行效果。 特别注意 : 如果 servlet 所请求的 JSP 页面 , 使用如下标记获得 servlet 所创建的 bean 的引用 ( 注意没有用 type 属性而是用 class 属性 ) jsp:useBean id keyWord class user.yourbean .BeanClass scoperequest/ 该标记中的 id 是 servlet 所创建的 bean 索引关键字。那么即使 servlet 所请求的 JSP 页面事先已经有了 id 是 keyWord scope 是 request 的 bean 那么这个 bean 也会被 servlet 所创建的 bean 替换。 原因是 servlet 所请求的 JSP 页面会被刷新就会根据当前页面使用的 jsp:useBean id keyWord class user.yourbean.BeanClass scoperequest/ 标记到 Tomcat 引擎管理的内置对象 PageContext 中寻找 id 是 keyWord 生命周期是 request 而该 bean 已经被 servlet 更新了。 session周期的Javabean 1Javabean的创建 servet创建生命周期为session的bean的步骤如下 1用BeanClass类的某个构造方法创建bean对象例如 BeanClass beannew BeanClass(); 2将所创建的bean对象存放到HttpSerletSession对象session中并指定查找该bean的关键字该步骤决定了bean的生命周期为session。例如 HttpSession sessionrequest.getSession(true); session.setAttribute(keyWord,bean); 内置对象执行上述操作就会把bean存放到Tomcat引擎管理的内置对象pageContext中该bean被指定的id是keyWord生命周期是PageContext.SESSION_SCOPEsession。 2 视图更新 servelt创建bean, bean的生命周期为session只要用户的session没有消失该bean就一直存在一个用户在访问Web服务目录的各个JSP中都可以使用jsp:useBean idkeyWord typeusern.yourbean.BeanClass scopesession/ 标记获得servlet所创建的bean的引用然后使用jsp:getProperty namekeyWord propertybean的变量/标记显示该bean中的数据该标记中的id是servlet所创建的bean索引关键字。 对于生命周期为session的bean如果servlet希望某个JSP显示其中的数据可以使用RequestDispatcher对象向该JSP页面发出请求也可以使用HttpServletResponse类中的重定向方法sendRedirect。 show.jsp页面使用如下标记获得servlet所创建的bean的引用(注意没有用type属性而是用class属性)jsp:useBean idkeyWord classuser.yourbean.BeanClass scopesession/该标记中的id是servlet所创建的bean索引关键字。那么即使servlet所请求的JSP页面或其他页面事先已经有了id是keyWordscope是 session 的bean那么这个bean也会被servlet所创建的bean替换。 原因是servlet所请求的JSP页面或其他页面被刷新时就会根据当前页面使用的jsp:useBean idkeyWord classuser.yourbean.BeanClass scope session /标记到Tomcat引擎管理的内置对象PageContext中寻找id是keyWord生命周期是session,而该bean已经被servlet更新了。 application周期的Javabean 1Javabean的创建 servet创建生命周期为application的bean的步骤如下 1用BeanClass类的某个构造方法创建bean对象例如 BeanClass beannew BeanClass(); 2servlet使用getServletContext()方法返回服务器的ServletContext内置对象的引用将所创建的bean对象存放到服务器这个ServletContext内置对象中并指定查找该bean的关键字该步骤决定了bean的生命周期为application例如getServletContext().setAttribute(keyWord,bean); 上述操作就会把bean存放到Tomcat引擎管理的内置对象pageContext中该bean被指定的id是keyWord有效期限是生命周期PageContext.APPLICATION_SCOPEapplication。 2 视图更新 当servlet创建创建生命周期为application的bean后只要Web应用程序不结束该bean就一直存在。一个用户在访问Web服务目录的各个JSP中都可以使用jsp:useBean idkeyWord typeuser.yourbean.BeanClass scopeapplication/ 标记获得servlet所创建的bean的引用然后使用jsp:getProperty namekeyWord propertybean的变量/标记显示该Javabean中的数据该标记中的id是servlet所创建的bean索引关键字。 对于生命周期为application的bean如果servlet希望某个JSP显示其中的数据可以使用RequestDispatcher对象向该JSP页面发出请求也可以使用HttpServletResponse类中的重定向方法sendRedirect。 注意:所有用户在同一个Web服务目录中的application生命周期的bean是相同的即占有相同的内存空间。另外,如果servlet所请求的JSP页面比如show.jsp页面使用如下标记获得servlet所创建的bean的引用(注意没有用type属性而是用class属性)jsp:useBean idkeyWord classuser.yourbean.BeanClass scopeapplication/该标记中的id是servlet所创建的bean索引关键字。那么即使servlet所请求的JSP页面或其他事先已经有了id是keyWordscope是application的bean那么这个bean也会被servlet所创建的bean替换。 原因是servlet所请求的JSP页面或其他页面被刷新时就会根据当前页面使用的jsp:useBean idkeyWord classuser.yourbean.BeanClass scopeapplication/标记到Tomcat引擎管理的内置对象PageContext中寻找id是keyWord生命周期是application而该bean已经被servlet更新了 Javabean和Servlet与配置文件 Javabean类的包名均为mybean.dataServlet类的包名均为myservlet.control。 1保存Javabean类和Servlet类的源文件 D:\ mybean\data 和 D:\myservlet\control 2编译Javabean类 D:\javac mybean\data\Javabean的源文件 3编译Servlet类 D:\ javac myservlet\control\servlet的源文件 4将类的字节码文件保存到服务器 ch9\WEB-INF\classes\mybean\data 和ch9\WEB-INF\classes\myservlet\control 5web.xml文件 编写web.xml文件并保存到Web服务目录的WEB-INF子目录中即ch9\WEB-INF中 MVC模式与注册登录 大部分Web应用都会涉及到注册与登录模块。本节使用MVC模式讲述怎样设计注册、登录模块。为ch9\WEB-INF中的web.xml文件添加如下子标记 Javabean与Servlet管理 本节的Javabean类的包名均为mybean.dataServlet类的包名均为myservlet.control。 1保存Javabean类和Servlet类的源文件 D:\ mybean\data 和 D:\myservlet\control 2编译Javabean类 D: javac mybean\data\Javabean的源文件 3编译Servlet类 D: javac myservlet\control\servlet的源文件 4将类的字节码文件保存到服务器 ch9\WEB-INF\classes\mybean\data 和 ch9\WEB-INF\classes\myservlet\control 配置文件管理 本节的Servlet类的包名均为myservlet.control需要配置Web服务目录的web.xml文件即将下面的web.xml文件保存到Tomcat安装目录的Web服务目录ch9中。根据本书使用的Tomcat安装目录及Web服务目录需要将web.xml文件保存到D:\apache-tomcat-8.0.3\webapps\ch9\WEB-INF目录中。 web.xml servlet servlet-nameregister/servlet-name servlet-classmyservlet.control.HandleRegister/servlet-class /servlet servlet-mapping servlet-nameregister/servlet-name url-pattern/helpRegister/url-pattern /servlet-mapping servlet servlet-namelogin/servlet-name servlet-classmyservlet.control.HandleLogin/servlet-class /servlet servlet-mapping servlet-namelogin/servlet-name url-pattern/helpLogin/url-pattern /servlet-mapping 数据库设计与连接 1 创建一个数据库 、表 使用MySQL建立一个数据库student该库共有一个user表 。 user表的用途存储用户的注册信息。即会员的注册信息存入user表中user表的主键是logname各个字段值的说明如下 logname 存储注册的用户名属性是字符型主键 password 存储密码属性是字符型 email 存储email属性是字符型 2 数据库连接 避免操作数据库出现中文乱码需要使用 Connection getConnection(java.lang.String) 方法建立连接连接中的代码是用户是root其密码是空 String url jdbc:mysql://127.0.0.1/student?userrootpasswordcharacterEncodinggb2312; Connection con DriverManager.getConnection(uri);