版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设计内容与要求问题描述(1)给系统用户分成两种角色:注册用户和管理员。能根据角色的不同来显示或隐藏管理功能的链接,即权限不同,可使用系统的功能也不同。(2)实现用户注册和登录功能。(3)能从用户登陆界面获取用户名和密码。(4)能连接MySQL数据库来查询验证用户名和密码的有效性。运行环境要求正确安装、配置和运行Tomcat服务器。正确安装、配置和运行SQLServer服务器。正确安装、配置struts和SQLServer的JDBC驱动程序。技术要求要求分别使用三种不同的方式来实现。Servlet和html页面结合的技术。JSP技术和Java辅助类结合。struts应用程序框架。利用面向对象的方法、编程思想来完成系统的设计;在设计的过程中,建立清晰的类层次;在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法;要求理解MVC设计模式和运用struts框架来实现系统功能的模块化设计。(1) 用户注册:搜集用户个人信息,确定唯一的用户标识,并把信息写入数据库中。用户将看到一个注册屏幕,包含3个字段:用户名,密码和密码确认。成功的注册要求两次密码相符。如果注册成功,控制将转向一个页面,显示注册成功。如果两次输入密码不同,控制流将转向一个显示失败的页面。(2) 用户登录:根据用户输入的标识,访问数据库,判断用户是否为注册用户;如果是则显示登录成功页面,该页面包含有用户名的欢迎信息;否则提示用户输入错误,重新输入或注册为新用户。要求页面有合适的表单,对用户输入有客户端的数据验证。比如用户名不能为空。设计说明2.1系统功能分析1、用户登录,跳转至相应的成功或失败界面,用户名与密码都不能为空2、用户注册,跳转至相应的成功或失败界面,2次密码输入一致。3、管理员登录,跳转至相应的成功或失败界面。4、三种不同的实现方式。2.2系统功能描述用户登录该系统,用可以通过注册界面注册用户名和密码,并同时完成身份信息的录入然后可以实现用户登录。同时另一角色管理员也可实现相应的登录操作,通过连接mysql数据库来查询验证用户名和密码的有效性。根据验证结果转向不同的页面进行处理,并给出相应提示。2.3功能模块设计根据功能分析,网络购物系统用户登陆管理可以分为三个模块,每一个模块相应的实现了具体的功能。Servlet和html页面结合的技术3.1工程目录结构一|j2Z7shejiE)"SKC[E-ffixiit:±n0-[Tjlogins.java©■■[Tjregis注+0\、TRESystemLibr:±t_y[FilyEclipse6.5±)-QiJavaEE5Libr:±t-ies一巴RefHrerLCHilLibr:ifies由…盂imysql_cunzLectur_java_5.1.6_bin一lWebRuat田…凸META-INFE)-&WEB-INF| | |…&lib|Xfweb.xmlH*lugin.htmlH*regietmrE.html H3.2内部文件登录界面login.html,含functionvalidate()函数验证用户名与密码不能为空。用户注册界面registers.html,含functioncheck()函数验证2次密码输入的一致性。logins.java处理用户登录信息,含有连接数据库的代码,并连接到数据库,并显示欢迎的界面regist.java处理用户注册信息,含有连接数据库的代码,并连接到数据库,并显示欢迎的界面mysql的驱动:连接MyEclipse和MySQL。关键代码Login.html<html><head><title>login.html</title><scriptlanguage="javascript">functionvalidate(form1){if(form1.usernamel.value.length==0){alert("用户名不能为空!");form1.usernamel.focus();returnfalse;}if(form1.passwordl.value.length==0){alert("密码不能为空!");form1.passwordl.focus();returnfalse;}}</script></head><bodybgcolor="red"><formname="form1"method="post"action="servlet/logins"onsubmit="returnvalidate(this)">用户名:<inputtype="text"name="usernamel"><br>密码: <inputtype="password"name="passwordl"><br><inputtype="submit"value="登录"><inputtype="reset"value="清空"/><br><ahref="registers.html"> 注册</a></form></body></html>Registers.html<html><head><title>无标题文档</title><scriptlanguage="javascript">functioncheck(form2){if(document.form2.passwordr.value!=document.form2.passwordr1.value){alert("2次密码不一致");returnfalse;}}</script></head><bodybgcolor="green"><p>用户注册界面</p><formname="form2"method="post"action="servlet/register"onsubmit="returncheck(this)"> 用户名:<inputname="usernamer"type="text"size="15"maxlength="15")/><br/> 密码:<inputname="passwordr"type="password"size="15"maxlength="15"/><br/>确认密码:<inputname="passwordr1"type="password"size="15"maxlength="15"/><br/> <inputtype="submit"value="提交"/><inputtype="reset"value="清空"/></form></body></html>Logins.javapackagexufan;importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;importjava.sql.*;publicclassloginsextendsHttpServlet{privatestaticfinallongserialVersionUID=549311771937809546L;publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType("text/html;charset=UTF-8");PrintWriterout=response.getWriter();out.println("<html><body>");Stringurl="jdbc:mysql://localhost/mydatabase";Connectionconn;ResultSetrs;Statementstmt;Stringusernamel=request.getParameter("usernamel");Stringpasswordl=request.getParameter("passwordl");Stringsql="selectusernamefromxufan";try{Class.forName("com.mysql.jdbc.Driver");conn=DriverManager.getConnection(url,"root","123");stmt=conn.createStatement();rs=stmt.executeQuery(sql);while(true){if(rs.next()){if(usernamel.equals(rs.getString(1))){if(rs.getString(1).equals("aaa")){out.println("欢迎你管理员!<br>");out.println("管理员名字为:"+usernamel+"<br>");out.println("管理员密码为:"+passwordl+"<br>");break;}out.print("欢迎普通用户登录成功!<br>");out.println("用户名为:"+usernamel+"<br>");out.println("密码为:"+passwordl+"<br>");break;}}else{out.print("用户不存在!");break;}return;}catch(SQLExceptione){e.printStackTrace();}catch(ClassNotFoundExceptione){e.printStackTrace();}out.println("</body><html>");}publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doPost(request,response);}}Register.javapackagexufan;importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;importjava.sql.*;publicclassregisterextendsHttpServlet{privatestaticfinallongserialVersionUID=549311771937809546L;publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType("text/html;charset=UTF-8");PrintWriterout=response.getWriter();out.println("<html><body>");Stringurl="jdbc:mysql://localhost/mydatabase";Connectionconn;ResultSetrs;Statementstmt;Stringusernamer=request.getParameter("usernamer");Stringpasswordr=request.getParameter("passwordr");Stringsql="insertintoxufanvalues('"+usernamer+"','"+passwordr+"');";Stringsql1="selectusernamefromxufan";try{Class.forName("com.mysql.jdbc.Driver");conn=DriverManager.getConnection(url,"root","123");stmt=conn.createStatement();rs=stmt.executeQuery(sql1);while(true){if(rs.next()){if(usernamer.equals(rs.getString(1))){out.println("用户已经存在!请重新注册");break;}}else{stmt.executeUpdate(sql);out.println("恭喜你注册成功!<br>");out.println("用户名为:"+usernamer+"<br>");out.println("密码为:"+passwordr+"<br>");break;}}return;}catch(SQLExceptione){e.printStackTrace();out.println("程序有误!");}catch(ClassNotFoundExceptione){e.printStackTrace();out.println("程序有误!");}out.println("</body></html>");}publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doPost(request,response);}}JSP技术和Java辅助类结合4.1工程目录结构i-
由“.
白...i-
由“.
白...i-JILE2严七珂Libr:±t_y[FilyEclipse6.51JavaEE5Libr:±t-iesIRefHrerLCHilLibr:ifiesmmysql_cunzLectur_java_5.1.6_bin、WebRoot凸META-INF&WEB-ItTFj*i:hecklagiiLjsp『i:he匚kregister.jspj*lugin.jspj*regietEtm.jsp4.2内部各类文件login.jsp是用户登录界面,functionvalidate()函数用来验证用户名密码都不能为空。registers.jsp是用户注册界面,functioncheck()函数来验证2次密码输入是否一致。checklogin.jsp用户登录处理界面,连接数据库,以及显示登录成功的信息。checkregister.jsp用户注册登录成功界面,连接数据库,和显示注册成功的信息。4.2关键代码Login.jsp<%@pagelanguage="java"pageEncoding="utf-8"%><html><head><title>MyJSP'login.jsp'startingpage</title><scriptlanguage="javascript">functionvalidate(form1){if(form1.usernamel.value.length==0){alert("用户名不能为空!");form1.usernamel.focus();returnfalse;}if(form1.passwordl.value.length==0){alert("密码不能为空!");form1.passwordl.focus();returnfalse;}}</script></head><bodybgcolor="green"><formname="form1"method="post"action="checklogin.jsp"onsubmit="returnvalidate(this)">用户登录界面<br>用户名:<inputtype="text"name="usernamel"><br>密 码:<inputtype="password"name="passwordl"><br><inputtype="submit"value="登录"><inputtype="reset"value="清空"/><ahref="registers.jsp">注册</a></form></body></html>Registers.jsp<%@pagelanguage="java"pageEncoding="utf-8"%><html><head><title>MyJSP'registers.jsp'startingpage</title><scriptlanguage="javascript">functioncheck(form2){if(document.form2.passwordr.value!=document.form2.passwordr1.value){alert("2次密码不一致");returnfalse;}}</script></head><bodybgcolor="green"><formname="form2"method="post"action="checkregister.jsp"onsubmit="returncheck(this)">用户注册界面<br>用户名:<inputname="usernamer"type="text"size="15"maxlength="15") /><br>密 码:<inputname="passwordr"type="password"size="15"maxlength="15"/><br>确认密码:<inputname="passwordr1"type="password"size="15"maxlength="15"/><br><inputtype="submit"value="提交"/><inputtype="reset"value="清空"/></form></body></html>Checklogin.jsp<%@pagelanguage="java"pageEncoding="utf-8"%><%@pageimport="java.sql.*"%><html><head><title>MyJSP'checklogin.jsp'startingpage</title></head><body><%Stringurl="jdbc:mysql://localhost/mydatabase";Connectionconn;ResultSetrs;Statementstmt;Stringusernamel=request.getParameter("usernamel");Stringpasswordl=request.getParameter("passwordl");Stringsql="selectusernamefromxufan";try{Class.forName("com.mysql.jdbc.Driver");conn=DriverManager.getConnection(url,"root","123");stmt=conn.createStatement();rs=stmt.executeQuery(sql);while(true){if(rs.next()){if(usernamel.equals(rs.getString(1))){if(rs.getString(1).equals("aaa")){out.println("欢迎你管理员!<br>");out.println("管理员名字为:"+usernamel+"<br>");out.println("管理员密码为:!"+usernamel+"<br>");break;}out.print("欢迎你登录成功!<br>");out.println("用户名为:"+usernamel+"<br>");out.println("密码为:!"+usernamel+"<br>");break;}}else{out.print("用户不存在!");break;}}return;}catch(SQLExceptione){out.println("有误");}catch(ClassNotFoundExceptione){e.printStackTrace();out.println("程序有误!");}%></body></html>checkregister.jsp<%@pagelanguage="java"pageEncoding="utf-8"%><%@pageimport="java.sql.*"%><html><head><title>MyJSP'checkregister.jsp'startingpage</title></head><body><%Stringurl="jdbc:mysql://localhost/mydatabase";Connectionconn;ResultSetrs;Statementstmt;Stringusernamer=request.getParameter("usernamer");Stringpasswordr=request.getParameter("passwordr");Stringsql="insertintoxufanvalues('"+usernamer+"','"+passwordr+"');";Stringsql1="selectusernamefromxufan";try{Class.forName("com.mysql.jdbc.Driver");conn=DriverManager.getConnection(url,"root","123");stmt=conn.createStatement();rs=stmt.executeQuery(sql1);while(true){if(rs.next()){if(usernamer.equals(rs.getString(1))){out.println("用户已经存在!请重新注册");break;}}else{stmt.executeUpdate(sql);out.println("恭喜你注册成功!<br>");out.println("用户名为:"+usernamer+"<br>");out.println("密码为:"+passwordr+"<br>");break;}}return;}catch(SQLExceptione){e.printStackTrace();out.println("程序有误!");}catch(ClassNotFoundExceptione){e.printStackTrace();
out.println(out.println("程序有误!");%></body></html>struts应用程序框架5.1工程目录结构sheji£trut-鍔srccom.y:n±fcomp^i\y.I$-jRi:om.yciiifi:omp:aiLy.etrute.action®-JTjLuginA匚tiun.java+ 0RegiwterAction.javaIH--JRi:om.yMilt-1:omp:iiLy.etrut吕.form+0LugiriFarm.java0-jTjRegisthkForm.javaESystmmLibr:ii-y[FilyEclipse6.5,vaEE5Libr:±fieskut吕1.2Libr:±i-iesterencedLibr:ii-iesmysql_i:口nre«:tur_java_5.1.6_bin-WebRuat宙GMETA-I1IF白••&WEB-I1TF| |…&libT*吕truts_bH:dTL.tld瑁*wtriitE_config.xmlT*弓trutE_htmLtldT*吕truts_lugic.tldT*wtmtE-nestmd..tld••话EtrutE-tiles.tld••…[x]v:ilidatui—riilee.xml|Xfweb.xmlj"aiiniirL.jspj*failm-H.jspj*iailijErel.jspj*lugirL.jspj*register.jspJ*EUCCfiEE.jEpJ*EUCi:eee1.jEp5.2内部各类文件login.jsp是用户登录界面,函数checkLogin()来验证用户名密码不能为空。Register.jsp是用户注册界面,checkPass()函数来验证2次密码的输入是否一致。普通用户登陆和注册成功界面success.jsp,success1.jsp普通用户登陆和注册失败界面failure.jsp,failure1.jsp管理员登陆成功界面admin.jspStruts的配置文件:struts—config.xmlAction包里的2个java类:LoginAction.java:用来处理用户的登录动作,含有连接数据库的代码,mappingfindforward(),用来跳转到相应的成功或失败的页面。RegisterAction.java:用来处理用户的注册操作,含有连接数据库的代码,mappingfindforward(),用来跳转到相应的成功或失败的页面。Form包里的2个java类:LoginForm.java:它实际是一个java类,用来捕获登录用户通过请求传送到web应用的请求参数。RegisterForm.java:它实际是一个java类,用来捕获注册用户通过请求传送到web应用的请求参数。5.3关键代码login.jsp<%@pagelanguage="java"pageEncoding="UTF-8"%><%Stringpath=request.getContextPath();%><html><head><title>ve</title><SCRIPTtype="text/javascript">functioncheckLogin(){varloginId=document.LoginForm.id;varloginPwd=document.LoginForm.loginPwd;if(loginId.value==""){alert("请输入用户名");document.LoginForm.id.focus();}elseif(loginPwd.value==""){alert("请输入用户密码");document.LoginForm.loginPwd.focus();}else{document.LoginForm.submit();}}</SCRIPT></head><bodybgcolor="green"><FORMaction="<%=request.getContextPath()%>/login.do"method="post"name="LoginForm"onSubmit="returncheckLogin()">用户登录界面<br>用户名:<INPUTtype="text"name="id"id="id"><br>密 码:<INPUTtype="password"name="loginPwd"id="loginPwd"><br> <INPUTtype="submit"name="submit"value="登录"onClick="checkLogin()"><INPUTtype="button"value="注册"onclick="window.location.href='register.jsp'"/><br></FORM></body></html>register.jsp<%@pagelanguage="java"pageEncoding="UTF-8"%><%Stringpath=request.getContextPath();%><html><head><title>注册</title><SCRIPTlanguage="javascript">functioncheckPass(){varpass=document.RegisterForm.loginPwd;varrpass=document.RegisterForm.txtRPass;if(pass.value==""){alert("密码不能为空");pass.focus();returnfalse;}if(rpass.value!=pass.value){alert("确认密码与密码输入不一致");rpass.select();returnfalse;}returntrue;}</SCRIPT></head><bodybgcolor="green"><formaction="<%=request.getContextPath()%>/register.do"method="post"name="RegisterForm"onSubmit="returncheckPass()">用户注册界面<br>用户名<INPUTtype="text"name="id"id="id"size="20"><br>密码<INPUTtype="password"name="loginPwd"id="loginPwd"size="20"><br>确认密码<INPUTtype="password"name="txtRPass"size="20"><br><INPUTtype="submit"name="submit"value="提交注册"><INPUTtype="button"value="返回"onclick="window.location.href='login.jsp'"/></form></body></html>success.jsp<%@pagelanguage="java"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="/jsp/jstl/core"%><html><head><title>登录成功</title〉</head><body>欢迎普通用户,登录成功!<br>用户名为:<c:outvalue="${param.id}"/><br>密码为:<c:outvalue="${param.loginPwd}"/><br></body></html>failure.jsp<%@pagelanguage="java"pageEncoding="UTF-8"%><html><head><title>登录失败</title〉</head><body>对不起,登录失败!请重新登录</body></html>success1.jsp<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><html><head><title>MyJSP'successl.jsp'startingpage</title></head><body>恭喜你,注册成功!<br></body></html>failure1.jsp<%@pagelanguage="java"pageEncoding="utf-8"%><%Stringpath=request.getContextPath();%><html><head><title>MyJSP'failure1.jsp'startingpage</title></head><body>对不起,注册失败!请重新注册<br></body></html>admin.jsp<%@pagelanguage="java"pageEncoding="utf-8"%><%@taglibprefix="c"uri="/jsp/jstl/core"%><%Stringpath=request.getContextPath();%><html><head><title>MyJSP'admin.jsp'startingpage</title></head><body>欢迎你,管理员!<br>管理员名字为:<c:outvalue="${param.id}"/><br>管理员密码为:<c:outvalue="${param.loginPwd}"/><br></body></html>LoginForm.javapackagecom.yourcompany.struts.form;importorg.apache.struts.action.ActionForm;publicclassLoginFormextendsActionForm{privatestaticfinallongserialVersionUID=-7229704902759245328L;privateStringid;privateStringloginPwd;publicStringgetId(){returnid;}publicvoidsetId(Stringid){this.id=id;}publicStringgetLoginPwd(){returnloginPwd;}publicvoidsetLoginPwd(StringloginPwd){this.loginPwd=loginPwd;}}LoginAction.javapackagecom.yourcompany.struts.action;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.struts.action.Action;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionForward;importorg.apache.struts.action.ActionMapping;importcom.mysql.jdbc.Connection;importcom.mysql.jdbc.Statement;importcom.yourcompany.struts.form.*;publicclassLoginActionextendsAction{publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){LoginFormuserInfo=(LoginForm)form;Stringid=userInfo.getId();StringloginPwd=userInfo.getLoginPwd();Stringurl="jdbc:mysql://localhost/mydatabase";Connectioncon=null;ResultSetrs=null;Statementstmt;Stringsql="selectusernamesfromxufans";try{Class.forName("com.mysql.jdbc.Driver");con=(Connection)DriverManager.getConnection(url,"root","123");stmt=(Statement)con.createStatement();rs=stmt.executeQuery(sql);while(true){if(rs.next()){if(id.equals(rs.getString(1))){if(rs.getString(1).equals("123")){returnmapping.findForward("admin");}returnmapping.findForward("success");}}else{returnmapping.findForward("failure");}}}catch(SQLExceptione){e.printStackTrace();}catch(ClassNotFoundExceptione){e.printStackTrace();}returnnull;}}RegisterForm.javapackagecom.yourcompany.struts.form;importorg.apache.struts.action.ActionForm;publicclassRegisterFormextendsActionForm{privateStringid;privateStringloginPwd;privateStringtxtRPass;publicStringgetId(){returnid;}publicvoidsetId(Stringid){this.id=id;}publicStringgetLoginPwd(){returnloginPwd;}publicvoidsetLoginPwd(StringloginPwd){this.loginPwd=loginPwd;}publicStringgetTxtRPass(){returntxtRPass;}publicvoidsetTxtRPass(StringtxtRPass){this.txtRPass=txtRPass;}}Registeraction.javapackagecom.yourcompany.struts.action;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.struts.action.Action;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionForward;importorg.apache.struts.action.ActionMapping;importcom.mysql.jdbc.Connection;importcom.mysql.jdbc.Statement;importcom.yourcompany.struts.form.*;publicclassRegisterActionextendsAction{publicActionForwardexecute(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){RegisterFormuserInfo2=(RegisterForm)form;Stringid2=userInfo2.getId();StringloginPwd=userInfo2.getLoginPwd();Stringurl="jdbc:mysql://localhost/mydatabase";Connectioncon=null;ResultSetrs=null;Statementstmt;Stringsql="selectusernamesfromxufans";Stringsql1="insertintoxufansvalues('"+id2+"','"+loginPwd+"');";try{Class.forName("com.mysql.jdbc.Driver");con=(Connection)DriverManager.getConnection(url,"root","123");stmt=(Statement)con.createStatement();rs=stmt.executeQuery(sql);while(true){if(rs.next()){if(id2.equals(rs.getString(1))){returnmapping.findForward("failure1");}}else{stmt.executeUpdate(sql1);returnmapping.findForward("success1");}}}catch(SQLExceptione){e.printStackTrace();}catch(ClassNotFoundExceptione){e.printStackTrace();}returnnull;}}strusts-config.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEstruts-configPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration1.2//EN""/dtds/struts-config_1_2.dtd"><struts-config><data-sources/><form-beans><form-beanname="loginForm"type="com.yourcompany.struts.form.LoginForm"/><form-beanname="registerForm"type="com.yourcompany.struts.form.RegisterForm"/></form-beans><global-exceptions/><global-forwards><forwardname="success"path="/success.jsp"/><forwardname="failure"path="/failure.jsp"/><forwardname="admin"path="/admin.jsp"/><forwardname="success1"path="/success1.jsp"/><forwardname="failure1"path="/failure1.jsp"/></global-forwards><action-mappings><actionpath="/login"type="com.yourcompany.struts.action.LoginAction"name="loginForm"scope="request"input="/login.jsp"><forwardname="success"path="/success.jsp"></forward><forwardname="failure"path="/failure.jsp"></forward><forwardname="admin"path="/admin.jsp"></forward></action><actionpath="/register"type="com.yourcompany.struts.action.RegisterAction"name="registerForm"scope="request"input="/register.jsp"><forwardname="success1"path="/success1.jsp"></forward><forwardname="failure1"path="/failure1.jsp"></forward></action></action-mappings><message-resourcesparameter="com.yourcompany.struts.ApplicationResources"/></struts-config>6三种技术的比较JSP(JavaServerPages是由Sun公司倡导、许多公司参与一起建立的一种动态网页技术标准,是J2EE中一种技术标准,功能同Asp.NET类似,主要用于同Asp.NET竞争,也是比较简单易学。EJB(EnterpriseJavaBeans),是J2EE中一种组件编程技术,可以通过这种技术实现强大的服务功能,属于J2EE高级编程范畴。Struts作为一个开放原代码的应用框架,在最近几年得到了飞速的发展,JSPWeb应用开发中应用得非常广泛,它已经成为ISPWei应用框架的标准,好处就是,很好的实现了4VC设计模式,将模型、视图、控制彻底分离,这样软件维护和可重用性就提高了。MVC(Model、View、Control)模式为大型程序的开发及维护提供了巨大的便利是现在最好的设计模式之一。Structs是J2EE中非常有前途的编程技术,它也属于T2EE高级应用范畴。尽管servlet是一种功能非常强大的web组件,但是它也具有非常大的局限性,就是java代码和html语句混杂在一起,使得当客户端的显示需要调整时,必须修改源代码,并且要重新写译servlet。由于servlet模糊了内容的提供与内容的表示的区别,在servlet类中出现大量的html文本使得servlet很难维护。Javaserverpage(java服务器页面,JSP)很好的解决了这一问题。Jsp页面把显示的静态内容(html文本)和动态内容很好的结合起来了,当需要修改页面的形式时,我们只需要修改html文本部分就可以了,它把servlet很难解决的问题(内容的提供和内容的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学生安全教育主题班会教案
- 教科版二年级上册科学期末测试卷(名校卷)
- 普通话朗读范文50篇拼音版
- 人工智能在学科知识体系构建中的应用
- 从管理角度分析如何增强嵌人式系统的网络安全
- 从全球视角看工业互联网与智能制造的发展趋势
- 围手术期的糖尿病
- 传统图案在家用纺织品设计中的创新应用案例分析
- 企业创新与太空探索的关系
- 企业决策支持系统的智能化改造升级
- 失眠之中医问诊单
- 桥式起重机定期检查记录表
- MOOC 警察礼仪-江苏警官学院 中国大学慕课答案
- 2023-2024学年度九上圆与无刻度直尺作图专题研究(刘培松)
- 2024年广东省2024届高三二模英语试卷(含标准答案)
- 2023年-2024年医疗器械知识测试题与答案(含A.B卷)
- 2023年度四川公需科目:数字经济与驱动发展
- 汽车制造业的柔性生产与敏捷制造
- 2024年制鞋工专业知识考试(重点)题库(含答案)
- 2023年政府采购评审专家入库考试模拟真题一套(含正确答案)
- 2023-2024学年广州大附属中学中考一模物理试题含解析
评论
0/150
提交评论