selvet开发缺陷:
页面严重缺乏可读性;
没有将页面表现和业务逻辑实现分离,维护难度增加;
本章作用:实现显示层和业务逻辑的分离;
一、在JSP中使用JAVAbean;
1.1<jsp:useBean>动作
效果:在JSP中抛弃java代码将javabean的代码显示出来;
1.1.1创建bean对象:
<jsp:useBean id="bean" class="com.lovo.bean.StudentBean" scope="session">
</jsp:useBean>
{ id: 表示当前实例化对象的引用;
这个可以直接从scope的session中对应键中取值;
class:创建的实例,指向引用的包和类的名称;
scope:javaBean保存的范围,page-request-session-application
}
【
后台操作:】在apache文件中查看到,首先创建一个空的bean对象然后再在session中查看有没有,没有的话就自己new一个放在CONTEXT中
【
传统方式创建】:
1.1.2设置Bean:property:代表当前对象的属性名;
name:代表当前javebean对象;
value:代表当前的值;
静态:
<jsp:setProperty property="studentname"
name="student" value="xiaoqing"/>
param:用于获取用户传过来的参数;
username是传递的属性的键,在获取到这个键的值之后再设置给property-studentname;
动态获取:
<jsp:setProperty property="studentname"
name="student" param="
username"/>
【
后台操作】:找到student对象,得到传过来的username的值设置给对象的属性studentname
动态全部获取:
传递所有的属性,
在请求的时候请求的属性名必须与javaBean的属性名保持一致,才能匹配
<jsp:setProperty property="
*"
name="student"/>
1.1.3获取JAVAbean的内容:
//获取学生对象的密码;
<jsp:getProperty property="
pwd"
name="student"/>
1.1.4输出bean对象:
<%= studentBean %>
【
作用域细节】:
page代表this的意思,在当前页面有效,设置在page中,不能在其他取
放在request中,作用域为一次
请求过程,得到响应之后,请求就消失了;
session的作用域为一个会话的
交互过程(开和关闭浏览器);session至始至终只有一个;
放在上下文中都可以获取;上下文以整个WEB工程的空间为空间。
【
细节】:在多线程中,session只有一个,多开的页面都使用用户的同一个session【有同步锁】;
为不造成其他页面之间的交互彼此的影响,一般使用request将数据进行传输;
JSP开发模式1:JSP+javaBean技术
javaBean:处理程序的业务、封装数据;
jsp负责:页面显示、
控制逻辑、业务对象调用;
1、将UserBean添加行为进行密码验证;
2、在jsp中直接处理业务
【
代码案例】
【使用场景】:
适合开发小程序、小代码;在小代码中使用这种,效率很高,开发简单,无需复杂架构; 缺点:项目不好维护;
JSP开发模式2:MVC架构 (JSP+javaBean+Servlet),表达是一种架构模型。本身没有引入任何新功能,只是把开发的架构组织的更合理了;实现表现和结构分离;逻辑和表现分离。
model(模型):提供要展示的数据,包括数据和行为;【javaBean】
view(视图):主要负责模型的
数据展示;【JSP/html】
Controller(控制器):接受用户请求,委托模型进行业务处理,处理完了以后再将数据发送给视图;是一个调度员角色;【Servlet】
【代码示例】
Servlet端: 接受用户信息、委托模型进行业务处理、实现用户信息展示的调度;
【使用场景】:
适合稍大的程序、实现增删改查功能;
【优 势】:
【缺 点】:在开发大型游戏项目的时候,业务比较复杂,MVC模型用javaBean,把javaBean称为javabean组件,即负责收集封装数据,又要进行业务逻辑的处理,造成javaBean非常的庞大,在大型项目中将javabean替换为三层架构; javabean组件:域模型+业务层+持久层;
JSP开发模式3:MVC架构+三层架构:
mvc存在于三层架构的表示层,M作为域模型,贯穿三层;
【小细节】:JSP设置的时候要记得修改他的编码集为UTF-8;
readonly="readonly" 设置input只读;
【小细节】:if( opwd0.value ==
<%=stu.getPassWord()%> ){
window.location.href="/JavaWeb_01/ChangeServlet?id="+
<%= stu.getId() %>+"&&pwd="+opwd0.value ;
}else{
alert("密码或用户名不正确");
}
下面的黑粗可以使用,上面的红色代码不可用;字符串拼接可以用;在js中嵌套不能识别;