我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 盖世程序员 > java server page(java服务器端页面技术)
总共48087条微博

动态微博

查看: 4797|回复: 7

java server page(java服务器端页面技术)

[复制链接]

326

主题

72

听众

999

金钱

实习版主

该用户从未签到

优秀版主

跳转到指定楼层
#
发表于 2014-03-04 21:12:14 |只看该作者 |正序浏览
java server page(java服务器端页面技术)。) \+ E3 x, V8 O" N% V
        是sun公司制订的一种服务器端动态页面生成技术的" H5 \6 G3 V5 u2 h- K9 T6 Y
规范。
% U0 w' c- P; Q! }' W2 x6 @0 }        因为直接使用servlet生成页面,如果页面比较复杂,
( f2 r# M7 _7 v; R则代码过于繁琐,并且难以维护。所以,对于比较复杂' u1 C0 H6 @/ {
的页面,使用jsp来编写,更容易编写和维护。
+ C4 n/ Y3 k( _3 J        2)如何写一个jsp文件。
9 \9 Y7 p- E2 m# x% Y        写一个以.jsp为后缀的文件,然后,在该文件当中,3 o' ^& b+ q: U& `+ v
添加html和java代码。编写完成之后,不需要编译,当
9 e# ^8 \2 Y% T+ T1 K客户端请求访问某个.jsp文件,则服务器会自动将0 I5 c6 E, B* ]# ?1 {* _
.jsp文件转换成一个.java文件(该.java文件其实是一个/ N+ ~& O% H( t
servlet)。
  {( X% F$ U6 V' @        3)jsp文件的组成
6 }' g1 T: Z& @/ {0 |5 F) l) C6 @, \                a,html(包括css,javascript):
5 i$ X7 Z8 M( j# P* }" D0 ~. e                直接写在.jsp文件里即可。
- `8 T2 C* I! b) j* N% g& X- @                b,java代码:$ n0 v" m' |& `! W
                        第一种形式 java代码片断  ?; o0 b5 `9 G$ n! J3 c7 a
                        语法:
# w1 S- [, h/ f& R+ E! H                                <%  java代码 %>
& d' E6 q! h$ Z' j                        第二种形式 jsp表达式
4 b8 [7 T. X; w2 k6 V! f                        语法:0 N5 U; I) R$ m, B
                                <%= java表达式%>$ V% ^: _/ N! ~2 w; S
                c,指令:/ n+ }, O, T. y: ~) n
                         所谓指令,就是告诉jsp引擎(容器当中,负责
* C& \& a5 G0 d" n& c                         将.jsp文件转换成.java文件,并在运行时,
  O4 G: O2 N1 T4 W: j6 {                         为jsp提供一些 辅助支持的模块),在将.jsp5 _$ M* O6 ]1 x8 C! ^0 T; D
                         文件转换成.java文件时,做一些额外的处理。
( v: ]% t! W# \4 b                         语法:/ ?; [% g$ a3 r+ N* e$ r
                                 <%@ 指令名 属性名=属性值%>
$ @4 ^% s$ `8 f8 Q7 Z7 S; ?1 x                                 page指令
9 ]8 |: F! V) n. v0 k% y- W% i# q                                         import属性:用于导包。
& u9 `" Q# l7 B                                                                                         比如
+ a3 ^2 r- w8 U3 x3 w1 I, T                                                                                         <%@page import="java.util.*,java.text.*"%>, h; [, N, w6 g
                                         contentType属性:等价于, S3 G+ p* X3 G8 Y
                                                                                         response.setContentType();: m9 L* ]! ]  G" }  r6 p
                                         pageEncoding属性:告诉jsp引擎,.jsp文件+ D# k' F4 u$ ?4 x9 H7 m
                                                                                         保存时的编码。/ x1 k3 a2 b- F* t9 D& z; h# n- {
                                 include指令1 ^, ^4 `5 D; d6 [
                                         file属性
+ Z7 D  N9 X7 b' m0 y2 F( X                                         告诉jsp引擎,在将.jsp文件转换成# ?/ o$ V  o3 @% A% f# x1 j3 A
                                         .java文件时,在指令所在的位置,插入7 x% d- u1 O0 v6 S6 v( N# T2 q
                                          file属性所指定的文件中的内容。2 n5 _( H+ j$ E# z8 B6 U+ {1 s
                d,隐含对象
  Z. p2 ~4 g/ R8 @/ r) C                        所谓隐含对象,指的是在.jsp文件当中,不用
3 V" C& w# e" c: U! G( A- z9 C6 P7 H                声明和创建该对象,就可以直接使用的对象。原! A' u1 R5 Y7 Z7 C
                因是,.jsp文件对应的.java文件当中,已经自动
! ]2 ]3 ]- X8 p+ @0 L2 b                生成了该对象的代码。
2 X/ F8 @: j+ S) z: }                        out         7 O7 ?' r7 `/ k' G( z# v+ f
                        request. d% F4 ~, }! S) K6 T
                        response/ j2 ~' a: f( p: G# t1 \" }% q! Y. p
        4).jsp文件如何转换成.java文件
: K7 f/ C. t6 h% d& @- m% R                a,html            ----> 放到service()方法里,使用- ]4 V& p) a$ T/ u, T  X; Y
                                                                                        out.write()输出。$ P6 A  K4 z( m: _" B$ {  U! T# Q
                b,java代码片断 ->        放到service()方法里,照搬。: L& ?3 K! m2 V1 C5 u  _; m
                c,jsp表达式        ----> 放到service()方法里,使用
( J# G2 C5 F8 u4 s                                                                                        out.print()输出。
2 r8 h; U( [2 C1 c- L       
6 o1 x6 p3 v* P- s6 J6 {        4 R. ]2 q; u1 C( e
1、转发& Y' f  _' Q% R. P: y6 H
        1)什么是转发?+ r. Y$ p2 a: W/ X! U
                一个web组件(jsp/servlet)将未完成的处理
; ]' S, s2 q) z) G0 r! r        转交给另一个web组件继续处理。转发的各个组- v& t, Y3 J2 ~2 L: S7 I. d' [; Y. i
        件会共享request和response对象。) N3 _- k  p% b4 b: m& U
        2)如何转发?
8 C- |/ A9 _4 ~  W' s+ s0 U                step1 先绑订数据' K7 i. E. G! U, o  v
                request.setAttribute(String name,
) t$ _/ @9 o5 o2 h& N. z5 _2 Y                Object obj);* @' P* _5 s( p* n) E$ C& l
                跟绑订相关的另外两个方法6 g$ b3 i6 _  U
                //如果name对应的值不存在,返回null。5 Z5 F- A0 j& _" ?1 A; Z! p* n2 `: d
                Object request.getAttribute(String name);
4 a' O' {. F5 |1 d  e9 p$ }                request.removeAttribute(String name);
0 f. v! b. q8 ]' e1 z+ L. N" t                step2 获得转发器,转发。
  x: a& N9 x. Y                        RequestDispatcher rd =
0 h7 r7 J6 v2 G0 t1 I7 Z/ ^                        request.getRequestDispatcher(String uri);8 o+ l# g$ S/ z. \" l: n3 [  Z
                        rd.forward(request,response);
" O1 f$ c/ Y7 e6 U) {' h& x        3)编程中要注意的问题
, U) f. X& b' t$ ^* u8 R9 b                转发之前,不能够执行out.close或者out.flush。
; o' x9 k' N* h2 P0 x' Y1 G                转发之前,会将response中缓存的数据先清空。        ! }8 i4 }( p) z1 r9 V5 _; f% O
        4)转发的特点, D& J/ T, V0 S( d
                a,转发的目的地只能是同一个应用内部的某个组件。6 M$ f) y# ?# A( e7 @- |% N
                b,转发之后,浏览器地址栏的地址没有变化。; a) X7 o7 j. A+ O
                c,转发所涉及的各个组件可以共享同一个request,
1 \6 E7 p* r5 j# G! T                response对象。2 e4 C; R7 _$ g0 ]7 ]! j% f
        思考:
: c( O( f& n9 Z! k+ B: R                转发与重定向的区别。: j) Q( }/ |! Z: R" K  E) z
2、表单中文问题
9 b; C+ g5 ^0 N        step1 jsp文件,要添加
* L. ^9 T! b* a- S7 Y2 @        <%@page pageEncoding="utf-8" : O6 \% b- e$ t* Z& Z4 h
        contentType="text/html;charset=utf-8"%>" b5 A/ f3 e( H( o" G' a6 j
        表单设置method="post"。" c: t7 S! D. l' d6 U
        step2 在servlet类当中,添加
7 P9 O; F* [) Z) r2 ]7 m9 v+ Y        request.setCharacterEncoding("utf-8");
! b/ u( r3 G8 z       
; o  m8 F, \, j# _( q        step3 如果要访问数据库:& `* N4 J; i1 B1 T) g  w* F1 M4 e
                a,保证数据库能够正常地保存中文。9 p3 ]' `3 {9 }, e; B
                对于mysql
% A9 z1 C: T6 _8 ~9 k, M                        create database dbname
# G5 d+ Y7 r. Q                        default character set utf8;. p0 Y* Z; n$ G, r! F+ ^
                b,使用jdbc访问数据库时,必须要保证
2 l. k+ c0 E3 r9 N8 X5 V5 ]                jdbc驱动程序能够识别数据库中保存
" d* x$ F; r3 c3 }                数据的编码。
( ~5 @5 j- K4 y9 b" T9 b  Y                        jdbc:mysql://localhost:3306/jd1109db2?
4 r/ N0 ?! t! v5 b% Q                        useUnicode=true&characterEncoding=utf8
6 s! |1 o' u7 E& S+ W7 _- E; |! E7 c, m: J1 E
3、路径问题1 a) C1 l0 H8 c1 o% y1 A* j! y& @7 ~
        链接地址、表单提交、重定向、转发的路径应该
3 r* o' Q5 }8 ?' u. Y. |如何写?
& g; U  M4 w# i* U        <a href=""></a>$ @3 Z. B$ ^) c5 V9 z& U
        <form action="">1 {& x) \7 t% k) W9 z- O9 |
        response.sendRedirect("");
) ]5 R) C+ |3 m/ E* p- w        getRequestDispatcher("");
6 E3 }( X; A, s+ {, b# |( ?        a,相对路径与绝对路径9 `9 C9 A; `6 I9 a9 H1 M7 q2 r
        相对路径:不以"/"开头的路径,比如:
# Q( p+ R; r* |1 b. s8 T                <a href="del.do"></a>
. K2 i4 A$ m3 x2 M2 X        绝对路径: 以"/"开头的路径,比如:
) [$ g0 V& B7 H8 r! y" g                <a href="/appname/del.do"></a>
7 s# X* e* F/ W2 F0 \; U. D        b,怎样写绝对路径?4 z2 f( c  L. O
                链接、表单提交、重定向,绝对路径要从! a# W- p" N8 g( u- L
                应用名开始写。
' `+ _- T" `0 S* J3 Z                转发要从应用名之后开始写。
: l0 ]0 s! H2 k! d$ g                //返回应用名,比如返回"/web05";
/ K( B/ E9 v9 t  r                String request.getContextPath();, D4 U1 N; Q& ?1 L2 A: i
  Z  a, ?, g  {* m" z6 t' |

科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

3

主题

0

听众

170

金钱

三袋弟子

该用户从未签到

7#
发表于 2017-10-09 07:38:02 |只看该作者
不错不错6 T6 C; [; k, k! f+ z
回复

使用道具 举报

5

主题

0

听众

316

金钱

四袋长老

该用户从未签到

6#
发表于 2017-08-14 08:30:19 |只看该作者
不错不错不错
回复

使用道具 举报

woniu 实名认证   

2

主题

0

听众

330

金钱

四袋长老

该用户从未签到

5#
发表于 2016-04-12 12:22:03 |只看该作者
这个项目太棒勒!下下来学习下!
回复

使用道具 举报

woniu 实名认证   

2

主题

0

听众

330

金钱

四袋长老

该用户从未签到

地板
发表于 2016-04-12 12:21:51 |只看该作者
这个项目太棒勒!下下来学习下!
回复

使用道具 举报

1

主题

3

听众

341

金钱

四袋长老

该用户从未签到

板凳
发表于 2016-03-17 22:02:02 |只看该作者
学习一下。谢谢
回复

使用道具 举报

9

主题

0

听众

183

金钱

四袋长老

该用户从未签到

沙发
发表于 2016-01-06 18:40:48 |只看该作者
学习学习学习学习9 y5 y* j* Q9 f  S1 ~
回复

使用道具 举报

2

主题

0

听众

148

金钱

三袋弟子

该用户从未签到

楼主
发表于 2015-10-15 13:47:17 |只看该作者
看了看  学习学习  哈哈哈哈
回复

使用道具 举报

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表