关于实施MVC框架结构的WEB项目的一些见解

来源:互联网 发布:linux mint 安装 编辑:程序博客网 时间:2024/05/17 23:49
<script type="text/javascript">google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//</script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>一、实施Java的WEB项目需要掌握的 Java从语言角度来讲不是很难,但是从整体设计角度来讲属于完全面向对象的高级框架。如果要设计一个良好的框架结构,单单只掌握Java语言远远不够。在一个框架应用中语言只是其中的一个调价,想要发挥好语言的优势,还要有良好的环境条件才能。这就涉及到一个设计模式,还有和设计模式相关的一些知识。  Java是一种存面向对象的语言,所以要把Java应用的好,对面向对象一定要有良好的理解。对Java语言本身的特点和技巧更应理解。在主要的应用中,数据库相关的环节应用很多,所以对数据库应该有一定了解。不能单单只了解一种数据库,因为在很多实际开发中会提出很多数据库解决方案,所以只有在了解多种数据库的情况下才能有一个比较方案,不能只从价格上入手,要根据项目的实际需求来做出最好的性价比,这样才算一个合格的数据库解决方案。在很多应用中应用服务器有很重要的地位,所以对应用服务器的了解是必须的。包括配置,应用、和实施。而且最好也要了解多种应用服务器,然后根据项目需求比较选择应用。在服务器和设计模式结构中会应用到自定义文件,而且在应用高级设计时也会定义自用的标签,现在流行的是用XML去定义配置,所以XML语言应该有一定掌握。Java主要应用在网络上,所以对网络的协议应该有一定了解掌握。在设计WEB项目的应用中,网页的脚本语言起着不能忽视的作用,所以如果设计WEB项目的应用中,对HTML和JavaScript都应有一定的了解。综上所述:一个好的Java应用实施应该掌握如下:Java语言、面向对象思想、设计模式、框架结构、数据库、应用服务器、XML语言、网络协议、网页脚本语言。二、工具的选择在实际开发中,开发工具的直接影响着开发进程,使用工具如果过于复杂,在项目开发前要费很多时间学习;如果工具过于简单,开发时限制性又太大。所以要根据实际开发的难度和强度来做决定,而且要根据项目开发人员的实际情况。现在常用的Java项目开发环境有:JBuilder、VisualAge for Java、Forte for Java, Visual Café、Eclipse、NetBeans IDE、JCreator J2SDK、EditPlus 2 J2SDK。最好是熟知这些软件的优点和缺点,以便根据实际情况选择应用。三、Java语言Java语言体系比较庞大,语法和C相似。应用角度讲有JSP、Applet、Servlet、Application四部分。在大多WEB项目中主要应用到JSP、Servlet、Application这三部分,在WEB项目开发中Application主要的应用就是JavaBean。Applet是运行在客户端的程序,在图形显示方面很出色,它是需要预选下载到客户端的程序,在有些开发中,有一些设计需要运行在客户端,这时就要应用Applet,比如网易的聊天室。Servlet是运行在服务器端的程序,处理数据接收的能力很出色,是一个多线程的设计。在服务器端的功能十分强大。JSP是从Servlet上分离出来的一小部分,简化了开发,加强了界面设计。JSP定位在交互网页的开发。运用Java语法,但功能较Servlet弱了很多,并且高级开发中只充当用户界面部分。Application是Java应用程序,Java可以象C 等语言一样开发出应用软件,但是运行起来很慢。在WEB项目和一些开发中主要应用JavaBean就是Application的一部分,逻辑运算能力很前,能极大的发挥Java语言。而且可以运用Java的继承、多态、重载的特性,也可以实现封装。高级的WEB项目会应用到以上的所有技术,协作开发会提高开发的效率和系统的性能。四、面向对象思想Java语言是完全面向对象语言,所以在项目设计时应用会有很大的帮助,在设计时应尽量舍弃面向过程的设计方式。在分析项目业务关系的时候,应用一些ER图会用很大的帮助,这样能尽快找出业务逻辑主要面对的对象,然后对每个对象进行行为划分。最后设计实现的目的是对象之间的通信。《Thinking in java》中有很经典的一个比喻,把一个灯泡比喻成一个对象,然后把行为都封装到该对象中,如图:在这个例子中,类型/类的名称是Light,可向Light对象发出的请求包括包括打开(on)、关闭(off)、变得更明亮(brighten)或者变得更暗淡(dim)。通过简单地声明一个名字(lt),我们为Light对象创建了一个“句柄”。然后用new关键字实例化Light的一个对象。为了向对象发送一条消息,我们列出句柄名(lt),再用一个句点符号(.)把它同消息名称(on)连接起来。从中可以看出,使用一些预先定义好的类时,我们在程序里采用的代码是非常简单和直观的。五、设计模式  设计模式在Java项目实施过程更是重中之重。主要在与两层的设计模式、三层的设计模式和N层的设计模式。直接决定着项目的应用、部署和实际开发设计。六、框架结构在普通的WEB项目中很多采用两层的开发结构。JSP Servlet或JSP JavaBean。当对开发要求高的项目中使用很多的还是MVC的三层开发结构。能分有效的分离逻辑开发,使开发人员能专注于各自的开发中。同时也能时整个开发结构流程更清晰,但是需要比较高的开发配合度。MVC的完全开发难度较复杂,而且需要设计所有的控制流程,但不一定属于国际化开发,所以为了简化开发,提高结构清晰性,我们可以引用开发的框架,现在比较流行的MVC开发框架就是Struct。能大大提高开发进度,提高项目的结构性,但是学习Struct也需要一定的时间,而且需要XML的配合。Struct主要集中在Controller的设计,把Servlet分成FromBean和ActionServlet两个部分。同时增加了Servlet处理的API,包括Action、ActionForm、ActionMapping类等。每一个FormBean 都必须继承ActionForm类,FormBean是对页面请求的封装。即把HTTP request 封装在一个对象中,需要说明的一点就是多个HTTP request可以共用一个FormBean,便于维护和重用。FormBean的产生是为了提供数据给ActionBean,在ActionBean中可以取得FormBean中封装的数据,经相应的逻辑处理后,调用业务方法完成相应业务要求。Struct的核心是Controller,即ActionServlet,而ActionServlet的核心就是Struts-config.xml,Struts-config.xml集中了所有页面的导航定义。对于大型的WEB项目,通过此配置文件即可迅速把握其脉络,这不管是对于前期的开发,还是后期的维护或升级都是大有裨益的。掌握Struts-config.xml是掌握Struts的关键所在。主要原理图如下:  Struct框架可以应用在大、中、小型项目中。能大大的提高MVC模型的开质量和效率。七、数据库对于数据库应该了解他的性能和一些基本的操作常识,还有该数据库的特点。而针对与Java语言WEB项目的数据库开发则主要是对JDBC的应用,还有数据库连接池的应用。八、应用服务器同数据库一样,应该了解该服务器的性能,特点和一些常识。在应用方面,应用服务器主要是针对于配置和部署,对目录的配置,调试;对配置文件属性的修改;对访问权限和并发性的控制;Java类的部署等。还有对于服务器的整合配置,JSP典型的有apache tomcat的整合配置。如果熟悉XML语言的话,对服务器文件的配置,还有Java类的部署有巨大的帮助。九、XML语言  从上边所说可以看出XML语言对于WEB项目开发很有帮助,而且有时有关键的作用。十、网络协议  WEB项目开发中应该对应用的协议有一定的掌握,这样才能良好的应用语言相对应的知识或类库。十一、网页脚本语言为了提高WEB项目的整体性能,提高人机交互的友好界面,网页的脚本语言是很有用处的,有的时候可以解决很大的难题或提高程序的性能和应用性。网页脚本语言的执行都是在客户端执行的,速度很很快,并且大多的操作与服务器没有交互运算,所以在一些应用中非常理想。十二、实例一个MVC模式的数据传递的过程,从JSP页面输入一个字符,然后提交给Servlet,由Servlet调用JavaBean处理后,然后再把页面定向到另一个JSP页面,现在用session和request两个方法实现。JSP页录入页为Login.htm,显示页分别为RequestTest.jsp和SessionTest.jsp;Servlet为TestServlet.class,JavaBean为TestBean.class,包为com.xinkaidigital.jwing。代码如下:Login.htm :<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en"><html><head><title>Lomboz JSP</title></head><body bgcolor="#FFFFFF"><FORM METHOD="post" ACTION="servlet/com.xinkaidigital.jwing.TestServlet"><INPUT TYPE="text" NAME="testStr"><INPUT TYPE="submit"></FORM></body></html> TestServlet.class :package com.xinkaidigital.jwing; import java.io.IOException;import javax.servlet.ServletConfig;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpSession;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; public class TestServlet extends HttpServlet { // define charsetstatic final private String CONTENT_TYPE = "text/html; charset=GBK"; public void init(ServletConfig config) throws ServletException { super.init(config); } public void destroy() { //TODO Method stub generated by Lomboz } protected void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); } protected void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // define charset response.setContentType(CONTENT_TYPE); // instance new object TestBean testbean = new TestBean (); // instance session object HttpSession session = request.getSession(); // request data String testStr = request.getParameter("testStr"); // use MyTest JavaBean testbean.setTestStr (testStr); // define targetURL String targetURL = "/RequestTest.jsp"; // add session object session.setAttribute("sessionbean",testbean); // add request object request.setAttribute("requestbean",testbean); // use dispatch to go to JSP page this.dispatch(targetURL, request, response); } public void dispatch(String targetURI,HttpServletRequest request,HttpServletResponse response) throws java.io.IOException, ServletException { RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI); dispatch.forward(request, response); }} TestBean.classpackage com.xinkaidigital.jwing; public class TestBean { private String testStr = null; public TestBean () { super(); } void setTestStr(String testStr) { this.testStr = testStr; } public String getTestStr () { return testStr; }} RequestTest.jsp :<%@ page language="java" pageEncoding="GB2312" %><!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en"><html><head><title> requestbean JSP</title></head><body bgcolor="#FFFFFF"><jsp:useBean id="requestbean" scope="request" class="com.xinkaidigital.jwing.TestBean"/><%=requestbean.getTestStr()%><HR><CENTER><a href="/testSessionTest.jsp">SessionTest.jsp</a></CENTER><HR><CENTER><a href="/testLogin.html">Index</a></CENTER></body></html> SessionTest.jsp : <%@ page language="java" pageEncoding="GB2312" %><!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en"><html><head><title> sessionbean JSP</title></head><body bgcolor="#FFFFFF"><jsp:useBean id="sessionbean" scope="session" class="com.xinkaidigital.jwing.TestBean"/><%= sessionbean.getTestStr()%><HR><CENTER><a href="RequestTest.jsp">RequestTest.jsp</a></CENTER><HR><CENTER><a href="Login.html">Index</a></CENTER></body></html> 一个视图Bean的例子,把页面需要显示的内容封装到JavaBean里,然后在JSP页面调用JavaBean进行显示。Bean为TestView.class,进行显示数据,JSP页为代码如下:ViewTest.jsp :<%@ page language="java" pageEncoding="GB2312" %><!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en"><html><head><title>ViewBean JSP</title></head><body bgcolor="#FFFFFF"><jsp:useBean id="testview" scope="page" class="com.xinkaidigital.jwing.TestView"/><HR><%testview.setView();%><%=testview.getView()%><HR><CENTER><a href="RequestTest.jsp">RequestTest.jsp</a></CENTER><HR><CENTER><a href="SessionTest.jsp">SessionTest.jsp</a></CENTER><HR><CENTER><a href="Login.html">Index</a></CENTER></body></html> TestView.class :package com.xinkaidigital.jwing; public class TestView { // define StringBuffer variable StringBuffer list = null; public void setView() { list = new StringBuffer(); list.append("<table width="100%" border="0" cellpadding="0""); list.append("cellspacing="0" bgcolor="217DDE">"); list.append("<tr>"); list.append("<td>"); list.append("This is a test ViewBean1"); list.append("</td>"); list.append("</tr>"); list.append("<tr>"); list.append("<td>"); list.append("This is a test ViewBean2"); list.append("</td>"); list.append("</tr>"); list.append("<tr>"); list.append("<td>"); list.append("This is a test ViewBean3"); list.append("</td>"); list.append("</tr>"); list.append("</table>"); } public String getView() { return list.toString(); } }
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 馅料 饺子料 正宗鲜汁肉包馅料配方 一斤五仁月饼馅料配方 马肉馅饺子怎么调馅料 羊肉馅饺子放什么菜 鸡肉饺子馅放什么菜 菜馅 素菜饺子馅有哪些搭配 素菜饺子馅的做法 素菜包子馅的做法 包心菜包子馅做法大全 包心菜饺子馅做法大全 非菜饺子馅的做法 羊肉配什么菜做饺子馅 羊馅饺子配什么菜好吃 菜肉包子馅的做法 梅菜饺子馅的制作方法 菜包馅怎么做好吃 素菜馅包子 猪肉馅饺子配什么菜 大头菜馅饺子的做法 虾做饺子馅配什么菜 饺子馅肉和菜的比例 大头菜饺子馅的做法 鱼肉馅饺子配什么菜好 正宗鲅鱼饺子馅放什么菜好吃 驴肉包饺子用什么配菜馅好 馅饼面 麦多馅饼 天上掉馅饼 西班牙馅饼 家常馅饼 烙馅饼 土豆丝馅饼 胡萝卜馅饼 茴香馅饼 土豆馅饼 红豆沙馅饼 萝卜馅饼 奶酪馅饼