高效动态网页设计:掌握JSP核心技术

更新:11-12 名人轶事 我要投稿 纠错 投诉

Post:将用户提交的信息封装在HTML HEADER中。适合提交数据量大、安全性高的用户信息。例如:注册、登录、修改、上传等功能。

二、Jsp内置对象

1.请求对象

请求对象封装了客户端的请求信息,通过它我们可以了解客户的需求,然后做出响应。请求对象有一个请求域,即该对象始终有效,直到客户端的请求完成。它是HttpServletRequest 的实例对象。常用的方法如下:

String getParameter(String name):返回name指定的参数的参数值,常用于获取页面提交的数据

String[] getParameterValues(String name):返回所有包含参数名称的数组

void setAttribute(String,Object):存储本次请求中的属性,常用于请求转发时将数据传送到下一页

object getAttribute(String name):返回name指定的属性值,常用于获取RequestScode的属性

String getContentType():返回请求体的MIME类型

String getProtocol():返回请求中使用的协议类型和版本号

String getServerName():返回接收请求的服务器的主机名

2. 响应对象

响应对象包含响应客户请求的相关信息,但很少直接在JSP中使用。它的对象具有页面范围,即当访问某个页面时,该页面中的响应对象只能对本次访问有效。其他页面的response对象对于当前页面无效,都是HttpServletResponse的实例对象。常用的方法有以下几种:

String getCharacterEncoding():返回响应中使用的字符编码格式

void setContentType(String type):设置对应的MIME类型

PrintWriter getWriter():返回一个可以向客户端输出字符的对象。注意:getWriter()获取的对象的输出内容会先于内置对象out的输出内容。解决方案:调用out.flush();

sendRedirect(String location):重定向客户端的请求

3. 会话对象

session对象是在第一个Jsp页面加载时自动创建的,完成会话管理。当客户打开浏览器并连接到服务器时开始,当客户关闭浏览器并离开服务器时结束。这称为会话。当客户访问服务器时,可能会看到服务器上的几个页面之间进行切换,服务器通过会话对象知道这些页面是由同一个客户端操作的。不同用户的Session存储在服务器的内存中,它是HttpSession的一个实例对象。它是在HttpServerletRequest中获取的。常用方法如下:

long getCreateTime():返回SESSION创建时间

String getId():返回创建SESSION时Jsp引擎设置的唯一ID。

Object setAttribute(String name,Object value):将对象与指定名称绑定到此会话

Object getAttribute(String name):返回绑定到指定名称的对象。如果不存在,则返回null。

String[] getValueNames():返回包含此SESSION 的所有可用数据的集合

int getMaxInactiveInterval():返回两个请求之间SESSION的最大生存时间,单位为秒

Session的生命周期:创建、活动、销毁。

Session销毁方法(3种):session.invalidate();会话超时;服务器重启;

服务器如何判断多个页面是同一个Session:Session创建时,服务器会为Session对象分配一个唯一的标识ID。当客户端后续访问服务器时,Session对象会将这个标识ID传递给服务器,这样服务器就可以识别哪个会话正在访问当前页面。同一个Session对象的生命周期从浏览器打开时开始,到浏览器关闭时结束。

会话使用场景:保存登录验证码图片的文字,并保存登录前的访问路径(如在未登录的情况下浏览商城商品,购买商品时需要用户登录,此时需要当前访问路径保存到登录成功后,从Session中取出路径,这里保存的是相对路径,即已经被控制器拦截并处理过的路径)。

注意:当关闭所有页面并重新打开新页面时,Session 对象将被重新创建,但原始Session 不会被销毁。这个旧的Session对象仍然存在于服务器端,但是不再由客户端携带。它与服务器进行检查,直到会话超时,Session 对象才会被销毁。 Tomcat 的默认会话超时是30 分钟。我们可以通过session.setMaxInactiveInterval(时间/秒)或者在xml中配置节点。

4. 输出对象

out 对象通常用于向客户端输出内容。

void println():向客户端打印字符串

voidclear():清除缓冲区的内容。如果在flush()方法之后调用,将会抛出异常。

voidclearBuffer():清除缓冲区的内容。在flush()方法之后调用不会抛出异常。

voidlush():将缓冲区内容输出到客户端

int getBufferSize():返回缓冲区的大小(以字节为单位)。如果没有缓冲区,则大小为0

int getRemaining():返回缓冲区中剩余的可用空间

boolean isAutoFlush():返回缓冲区是否自动清除或满时抛出异常。

void close():关闭输出流

5. 应用对象

应用对象实现用户之间的数据共享,可以存储全局变量。它在服务器启动时启动,在服务器关闭时结束。在用户的前后连接或者不同用户之间的连接中,可以操作应用对象的相同属性。任何地方对应用程序对象的属性的任何操作都会影响其他用户对其的访问。服务器的启动和关闭决定了应用程序对象的生命周期。它是ServletContext 类的一个实例。常用的方法有以下几种:

void setAttribute(String name,Object value):使用指定名称绑定对象

Object getAttribute(String name):返回绑定到指定名称的对象。如果没有绑定,则返回null。

Enumeration getAttributeNames():返回所有可用属性名称的枚举

String getServerInfo():返回Jsp(Servlet)引擎名称和版本号

6. 页面对象

page对象指向当前Jsp页面本身,有点像类中的this指针。它是Java.lang.Object 类的实例。常用的方法有以下几种:

class getClass():返回此对象的类

int hashCode():返回该对象的哈希码

boolean equals(Object obj):判断这个Object是否等于指定的Object对象

void copy(Object obj):将此Object复制到指定的obj对象

Object clone():克隆这个Object对象

String toString():将此Object对象转换为String类的对象

void notify():唤醒正在等待的线程

void notifyAll():唤醒所有等待线程

void wait(int timeout):使线程处于等待状态,直到超时结束或被唤醒

void wait():使线程等待,直到被唤醒

7.PageContext对象

pageContext对象提供了Jsp页面中所有对象和命名空间的使用。它可以访问这个页面所在的session,也可以获取这个页面所在应用程序的某个属性值。相当于把页面中的所有功能都集成了。或者,它的类名也是pageContext,常用方法如下:

JspWriter getOut():返回当前客户端响应使用的JspWriter流(out)

HttpSession getSession():返回当前页面中的HttpSession对象

Object getPage():返回当前页面的Object对象(page)

ServletRequest getRequest():返回当前页面的ServletRequest对象

ServletResponse getResponse():返回当前页面的ServletResponse对象

void setAttribute(String name,Object attr):设置属性和属性值

Object getAttribute(String name,int range):获取指定范围内的属性值

int getAttributeScope(String name):返回属性的范围

voidforward(StringrelativeUrlPath):将当前页面重定向到另一个页面

void include(StringrelativeUrlPath):包含当前位置的另一个文件

8. 配置对象

Jsp 引擎在初始化时使用config 对象向Servlet 传输信息。这些信息包括Servlet初始化时使用的参数(由属性名和属性值组成)和服务器相关的信息(传递一个ServletContext对象)。常用方法如下:

ServletContext getServletContext():返回包含服务器相关信息的ServletContext对象

String getInitParameter(String name):返回初始化参数的值

Enumeration getInitParameterNames():返回Servlet初始化所需的所有参数的枚举

9. 异常对象

异常对象是异常对象。当页面运行过程中发生异常时,会生成该对象。如果Jsp页面想要应用这个对象,必须将isErrorPage设置为true,否则无法编译。它是Java.lang。 Throwable的实例,常用方法如下:

String getMessage():返回描述异常的消息

String toString():返回异常的简要描述

void printStackTrace():显示异常及其堆栈跟踪

Throwable FillInStackTrace():重写异常的执行堆栈跟踪

使用捕获页面:errorPage="谁应该处理异常捕获"

处理页面使用情况:isErrorPage="是否应用异常对象"

三、请求转发与请求重定向

请求重定向:客户端行为,本质上等于两次请求,第一次请求对象不保存,URL地址会改变

通过HttpServerletResponse对象:response.sendRedirect("/login.html");

通过Controller返回类型:return "redirect:/login.html";

通过Jsp指令:

例:你去A局办事,A局有人告诉你这件事归B局管辖,然后你走出A局,自己坐公交车去B局。

请求转发:服务器的行为就是请求。转发后,请求对象会被保存,地址栏中的URL地址不会改变。

通过HttpServerletRequest对象: request.getRequestDispatcher("/login.html").forward(req,resp);

通过Controller返回类型:return "forward:/login.html";

通过Jsp指令:

例:你去A局处理此事。 A局知道此事属于B局管辖,不会拒绝你的请求,而是帮助你联系B局处理此事。

四、JavaBean的使用

1. Javabean设计原理

公共类、无参数的公共构造函数、私有属性、getter() 和setter() 方法

2. Jsp动作

Jsp 操作元素提供请求处理阶段的信息。操作元素遵循XML 元素的语法。它有一个包含元素名称的开始标记,可以有属性、可选内容和一个与开始标记匹配的结束标记。

3. Jsp中使用Javabean的两种方式

像Java类一样直接创建实例

%经理经理=新经理();%

在Jsp 操作标签中使用Javabean

jsp:useBeanid="经理"范围="页面"

scope是作用域,id是唯一标识符,class是Javabean的完整类名(包名+类名)

4.为实例化的Javabean对象的属性赋值的四种方式

name的属性是useBean的id,property的值是匹配的javabean的属性,从form中获取,value的值是手动为javabean设置的属性,params的值是从请求对象的参数,以及请求参数的赋值方法。喜欢:

jsp:setPropertyproperty="*"name="经理"/

jsp:setPropertyproperty="用户名" name="经理"/

jsp:setPropertyproperty="用户名" name="经理" value="wjx" /

jsp:setPropertyproperty="用户名" name="经理" params="wjx" /

5.获取Javabean对象属性的值

jsp:getPropertyproperty="用户名" name="经理" value="wjx" /

6. Javabean的四个作用域可以使用userBean的scope属性来设置。

page:仅在当前页面有效

request:请求范围,可以通过HttpRequest.getAttribute()方法获取Javabean对象。

session:Session范围,可以通过HttpSession.getAttribute()方法获取Javabean对象

application:全局范围,可以通过application.getAttribute(0方法获取Javabean对象

五、Cookie对象

Cookie是Web服务器在客户端保存的一系列文本信息。典型应用:判断注册用户是否登录网站、处理购物车等。 功能:跟踪特定对象,保存用户的网页浏览记录和习惯,简化登录。缺点是容易泄露用户信息。常用方法如下:

void setmaxAge(int expiry):设置cookie有效期,以秒为单位

int getMaxAge():获取cookie对象的有效期,单位为秒

void setValue(String value): 给cookie 对象赋值

String getValue():获取cookie的值

String getName():获取cookie的名称

无效setPath("/");设置共享路径

完整的创作过程:

Cookie cookie=new Cookie("userId", String.valueOf(user.getId()));

cookie.setMaxAge(60 * 60 * 24 * 30);

cookie.setPath("/");

响应.addCookie(cookie);

使用场景:商城中的购物车(购物车的内容是Json数组,转成Java后是List)、用户的登录状态(浏览器中可以存储用户的唯一标识)

六、Cookie和Session对比

七、Jsp指令和动作元素

1.include动作(动态引入,无法获取jsp页面数据)

page指的是要包含的页,flush指的是包含的页是否从buffer中读取

2. 前进动作

等价于request.getRequestDispatcher("url").forward(req,resp);

3. 参数动作

经常与, 作为其子标签一起使用

4.include指令(静态引入,可以获取jsp页面数据)

%@ include 文件="/WEB-INF/include/taglib.jsp" %

5. 指令和动作的比较

8.中文乱码

1、传递给URL的中文参数乱码。

示例:URL传递中文参数

解决方案:选择Tomcat目录下的Server.xml,找到Connector字段,其中包含默认端口号等配置信息,然后添加URIEncoding="utf-8"字段,然后重新启动Tomcat服务器。注意:使用request.setCharacterEncoding("utf-8");代码中无法解决URL中中文乱码的问题。

URI和URL的区别:URL是绝对路径,URI是相对路径。

2、表单传递的中文参数乱码。

示例:%=request.getParameter("username")%(接收表单页面的代码)

原因:Tomcat提交表单时默认的编码格式是ISO-8859-1,而我们需要的是utf-8。

解决方案:在执行示例代码之前设置Tomcat的编码格式,request.setCharacterEncoding("utf-8");

3、中文信息存储在cookie对象中,先转码后保存,获取后再解码。

导入Java.net.*;

request.setCharacterEncoding("utf-8");

转码:String username=URLEncoder.encode(request.getParameter("用户名"),"utf-8");

解码: username=URLDecoder.decode(cookie.getValue(),"utf-8");

4、Jsp文件中写入中文后代码无法保存。

文章分享结束,高效动态网页设计:掌握JSP核心技术和的答案你都知道了吗?欢迎再次光临本站哦!

用户评论

一尾流莺

听起来蛮厉害的,jsp能让我自己定制网站的感觉很酷!

    有16位网友表示赞同!

枫无痕

动态网页设计确实有它的必要性,像内容更新之类的都能更方便。

    有20位网友表示赞同!

男神大妈

之前只知道静态网页设计,jsp是不是比较高级的技术阿?

    有7位网友表示赞同!

安陌醉生

想学习一下jsp动态网页设计,感觉可以拓展我的技能范围。

    有9位网友表示赞同!

初阳

有没有一些好的jsp教程推荐?我想尝试看看。

    有5位网友表示赞同!

可儿

动态网页设计让我能更自由地表达创意吧!

    有11位网友表示赞同!

琴断朱弦

好像有很多网站都是用jsp开发的,它真的很常见啊。

    有11位网友表示赞同!

封心锁爱

学习jsp需要花费一定的时间成本吗?我的时间够不够呢?

    有19位网友表示赞同!

致命伤

如果想做电商网站,jsp会不会是比较合适的方案?

    有13位网友表示赞同!

箜篌引

jsp还能用在其他网页开发领域吗?比如移动端?

    有5位网友表示赞同!

今非昔比'

动态网页设计是不是比静态网页设计更安全?

    有6位网友表示赞同!

鹿先森,教魔方

学习jsp需要掌握哪些其他的相关技术呢?

    有15位网友表示赞同!

留我一人

我觉得jsp这个名字听起来很有科技感!

    有5位网友表示赞同!

夜晟洛

现在流行什么类型的动态网页设计框架?和jsp有什么区别?

    有6位网友表示赞同!

墨染年华

jsp是不是一个比较成熟的技术,未来会不会被淘汰?

    有12位网友表示赞同!

迁心

想用jsp做一个个人网站,应该怎么做呢?

    有9位网友表示赞同!

命该如此

感觉学习jsp以后,我的工作机会会更多吧!

    有20位网友表示赞同!

浮世繁华

动态网页设计确实可以提升网站的用户体验!

    有16位网友表示赞同!

高冷低能儿

如果想成为一名网页开发工程师,要好好学习jsp!

    有12位网友表示赞同!

(り。薆情海

jsp的优点和缺点是什么?我觉得了解这些很重要。

    有5位网友表示赞同!

枫无痕

我想了解更多关于jsp应用场景的信息!

    有9位网友表示赞同!

【高效动态网页设计:掌握JSP核心技术】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活

上一篇:高效编程:代码精简之道 下一篇:首次空中之旅:云南探险之旅第九篇章