JSPMVCELWord格式.docx
- 文档编号:16524076
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:42
- 大小:114.18KB
JSPMVCELWord格式.docx
《JSPMVCELWord格式.docx》由会员分享,可在线阅读,更多相关《JSPMVCELWord格式.docx(42页珍藏版)》请在冰豆网上搜索。
publicjava.util.DategetDate(){
returnnewjava.util.Date();
}
3.普通脚本
%%>
●能写所有的Java代码
不能定义方法
html>
head>
/head>
body>
%
intj=0;
for(inti=1;
i<
=100;
i++){
j+=i;
}
%>
%=j%>
/body>
/html>
注意点:
脚本不能嵌套
错误的
<
%=i%>
正确的
%}%>
脚本和HTML标签不能嵌套
<
=10;
案例:
JSP打印99乘法表
%@pagelanguage="
java"
pageEncoding="
ISO-8859-1"
for(inti=1;
=9;
for(intj=1;
j<
=i;
j++){%>
%=j+"
*"
+i+"
="
+i*j+"
\t"
span>
&
nbsp;
/span>
%}%>
4.JSP原理
读一读JSP生成的Servlet
%=%>
为什么不能用分号?
为什么不能写for循环?
中的代码写到了service()方法
●JSP就是一个Servlet,由tomcat把JSP页面解释为Servlet
声明的代码被作为Servlet的成员(成员变量和方法)
5.JSP优劣
优点:
开发人员不用在程序中写标签;
美工不用去代码中调HTML标签
劣势:
Java代码和<
标签混在一起,结构混乱,不利阅读
效率差(第一次访问JSP时,Tomcat翻译时较慢)
b.指令***
●page
●include
●taglib导入标签库
1.page页面
%@%>
●属性
了解
✓language="
(默认)语言,只有Java
✓<
import="
"
等同于
%@pageimport="
✓isThreadSafe默认false
✓extends(默认)继承类
✓info="
演示页面"
对本JSP的功能描述
session="
true|false"
(默认为true)在本页面能否用session隐含对象
常用
✓import引入包
%@pageimport="
java.util.*"
✓isELIgnored是否支持EL表达式
✓contentType="
text/html;
charset=utf-8"
相当于response.setContentType("
);
✓pageEncoding解决Tomcat编译JSP为Servlet时乱码问题
备注:
Javac-encodingxxx.java编译文件时有个默认参数
2.include静态包含
%@include="
test01.jsp"
●作用:
把多个jsp中的源代码整合到一起
●辨析:
动态包含:
request.getRequestDispatcher().include()整合的是多个Servlet输出结果
有多个Servlet
静态包含:
是整合多个JSP当中的源代码
只一个Servlet,多个JSP被编译为一个Servlet
3.taglib导入标签库
%@tagliburi="
prefix="
c.动作(标签)***
jsp:
includepage="
>
动态包含
✓作用:
整合多个jsp的输出结果
test02.jsp"
/jsp:
include>
✓相当于request.getRequestDispatcher().include()
forwardpage="
✓从一个jsp中跳转到另外一个jsp中去
✓相当于request.getRequestDispatcher().forward();
3.JSP中的内置对象***
●内置对象:
这些对象不需要由程序员创建,可以直接调用的对象
●共9个内置对象,可以直接使用(记住它们的名字)
✓requestHttpServletRequest
✓responseHttpServletQesponse
✓sessionHttpSession
✓applicationServletContext
✓pageContext(重点)
功能:
1作用域setAttrubite()||getAttribute()||removeAttribute()
pageContext在当前页面存储数据
findAttribute()特有的方法
request
session
application
2可以获得所有其他的内置对象
3页面的跳转
✓out输出流
✓configServletConfig(了解)
✓exception异常
✓page一个jsp页面(了解)
注意:
全部小写,直接在JSP中使用
1.pageContext***
范围依次增大
pageContext.setAttribute("
name"
"
Attribute在当前页面有效
request.setAttribute("
Attribute在一次请求中有效
session.setAttribute("
Attribute在一次会话中有效
application.setAttribute("
Attribute在生命周期至tomcat关闭中有效
1)作用域
●setAttrubite()
●getAttribute()
●removeAttribute()
●pageContext.findAttribute("
pageContext的特有方法
作用:
依次从4个作用域中通过key获得value(从小到大)
2)可以获得所有其他的内置对象
●pageContext.getRequest();
●pageContext.getResponse();
●pageContext.getOut();
●pageContext.getServletContext();
3)页面跳转
pageContext.forward("
uri"
相当于<
)方法实现的伪代码
pageContext.forward(Stringuri){
Request=getRequest();
Response=getResponse();
Request.getRequestDespricter(uri).forward(Request,Response);
}
4.课堂练习*****
用户发送一个请求,给用户一个展示用户信息的页面
取得checkbox的值*****
checkbox取多个值得方法String[]value=request.getParameterValues("
UserAction.jsp
java.sql.*"
day1.User"
Connectionconn=null;
PreparedStatementpstmt=null;
ResultSetrs=null;
List<
User>
users=newArrayList<
();
try{
Class.forName("
oracle.jdbc.OracleDriver"
conn=DriverManager
.getConnection(
"
jdbc:
oracle:
thin:
@192.168.0.20:
1521:
tarena"
sd1103"
Stringsql="
selectusername,passwordfromt_user"
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next()){
Useru=newUser();
u.setUserName(rs.getString
(1));
u.setPassword(rs.getString
(2));
users.add(u);
}}
catch(Exceptione){
e.printStackTrace();
}
request.setAttribute("
users"
users);
UserView.jsp"
forward>
UserView.jsp
contentType="
charset=gbk"
users=(List<
)request.getAttribute("
scripttype="
text/javascript"
src="
jquery-1.4.3.js"
/script>
$(function(){
$("
:
button"
).toggle(
function(){
checkbox"
).attr("
checked"
},function(){
});
)
formmethod="
post"
action="
http:
//localhost:
8080/test01/DeleteAction.jsp"
tablecellpadding='
0'
cellspacing='
align='
center'
border='
1'
bordercolor='
blue'
width='
80%'
trbgcolor='
gray'
td>
/td>
UserName<
Password<
/tr>
for(Useru:
users){%>
tr>
inputtype="
name="
value="
%=u.getUserName()%>
/>
%=u.getUserName()%>
%=u.getPassword()%>
%}
/table>
center>
submit"
删除"
全选"
/>
/center>
/form>
DeleteAction.jsp
%@pagepageEncoding="
gbk"
//1获得checkbox传递上来的值
String[]value=request.getParameterValues("
//2删除
for(Stringv:
value){
conn=DriverManager.getConnection("
deletefromt_userwhereusername=?
pstmt.setString(1,v);
pstmt.executeUpdate();
}catch(Exceptione){
}finally{
if(pstmt!
=null){try{pstmt.close();
}catch(Exceptione){}}
if(conn!
=null){try{conn.close();
/UserAction.jsp"
5.课堂练习扩展*****
1)分页
selectt.*
from(username,password,rownumrfromt_user)
wheret.r>
?
andt.r<
2)提供按钮【全选】
引入JQuery来做
$(function(){
$("
)
})
6.作业:
简易银行项目
画图
用例图:
时序图--转账
时序图--冻结
day02
7.案例:
JSP分页***
1)rowid和rownum
rowid
●代表记录的物理地址(为数据在数据库中的地址)
●记录表空间唯一记录的ID,在数据表中唯一
●通过rowid的值进行查询效率高(相当于通过地址)
select*froms_empwhererowid="
AADDCCEE"
rownum
●相当于对查询结果加的一个伪列
●表示记录的行号(连续的)
selecttt.*,tt.r
from(selectt.*,rownumrfromt_usert)tt
wherett.r>
5andtt.r<
10;
2)代码
publicintgetTotalPage(){
intpageSize=4;
intcount=0;
conn=
DriverManager
.getConnection("
selectcount(*)fromt_user"
if(rs.next()){
count=rs.getInt
(1);
}catch(Exceptione){
returncount/pageSize+(count%pageSize==0?
0:
1);
Stringp="
if(request.getParameter("
page"
)==null){
p="
1"
}else{
//由客户端通知显示第几页的内容
p=request.getParameter("
//第几页数据显示
intpageIndex=Integer.parseInt(p);
//每页显示多少条数据
intpageSize=4;
//分页查询从first开始
intfirst=(pageIndex-1)*pageSize+1;
//从last结束
intlast=pageIndex*pageSize;
.getConnection
("
Stringsql=
selecttt.*,tt.rfrom(selectt.*,rownumrfromt_usert)ttwherett.r>
=?
andtt.r<
pstmt.setInt(1,first);
pstmt.setInt(2,last);
inttotalPage=getTotalPage();
pageIndex"
pageIndex);
totalPage"
totalPage);
/day2/UserView.jsp"
../jquery-1.4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JSPMVCEL