你应该了解的JSP开发细节之out对象(一)

简介: 你应该了解的JSP开发细节之out对象(一)

本系列博客将为大家介绍JSP开发中一些不为人所知的一些细节方面的问题,有些问题可能会比较简单,您可能已经知道了答案,但是未必了解背后的一些原理。我们将从发现问题、分析问题、解决问题的思路来深入的阐述这些不为人知的细节。


问题描述


我们要实现的功能很简单,在页面上显示一个简单的表达式的值,如下所示:


在正式阅读之前,请大家思考实现这样的功能,利用JSP技术有哪些途径呢?


1)最简单的方式莫过于直接写上一行静态网页代码如下:


一个p标签加上一行表达式文字,简单粗暴的完成任务。


2)上面的实现方式过于简单,我们使用稍微高级的一点做法吧。



利用JSP的内置隐含对象out的write方法,向页面输出一个p标签。


3)在上面的基础上,我们稍微改进一下,表达式的值通过Java来计算。

4)还是利用out对象,把p标签写在外面吧,利用Java的表达式进行计算,然后将结果输出到页面。


这种做法比上一种做法确实改进了不少,但是当我们运行的时候,发现页面并没有输出8,而是出现了下面的结果:


p标签中写上了表达式文字,然后利用Java语言来计算表达式的值,得到结果为8,最后通过表达式的值向页面输出8啊,最后得到的HTML代码应该是'<p>5+3=8</p>'这个啊,但是为什么结果会出错呢?


问题分析


看似简单的问题,但是你是否能够很清晰的告诉别人这是为什么呢?还是你只是简单的知道这个问题的答案而并不明白是什么原因导致的呢。


最好的解决方法就是直接看源码,这是最权威的地方。将鼠标放在write,按ctrl+B键进入源码。



5+3进行计算得到结果为8,因此调用的是write(int)方法。通过上图红框标记的结果可以看到,这个整数8会被强制类型转为char类型,即8所对应的ascii码。


而8对应的ascii码为『退格』,这是一个不可显示字符,故在我们的页面上无法看到退格键的显示。


为了验证确实是这个原因,我们计算另外一个表达式「30+12=42」,而42所对应的ascii码为「*」。


编写如下代码:

最终我们看到的结果为:


上述实验证明了我们的想法是正确的。


综上所述,我们得出问题的原因在于write(int)该方法会将整数强制转化为ascii码,然后向页面输出。


解决方案


上面的分析得出不能使用write(int)这个方法,而使用另外一个方法。



上图为write的所有方法列表。


通过分析得出write(String)这个方法比较适合。

在知晓问题产生的原因之后,我们就能很快的知道如何解决问题。直接将5+3的结果整数转化为String类型即可。


总结


本文从一个简单的表达式问题入手,逐步深入的分析问题产生的原因,在了解原因后,非常快速的给出了问题的解决方案。


还有其他哪些做法?欢迎下方留言。

目录
相关文章
|
2月前
|
前端开发 Oracle 关系型数据库
关于使用SSM+JSP开发时setter、getter隐式调用问题的小结
关于使用SSM+JSP开发时setter、getter隐式调用问题的小结
38 3
|
6月前
|
存储 Java 关系型数据库
JSP考试质量分析系统myeclipse开发mysql数据库bs框架java编程web网页结构
JSP 考试质量分析系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
185 1
|
3天前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
|
4月前
|
安全 Java
JSP中的隐式对象和四种会话作用域
JSP中的隐式对象和四种会话作用域
58 0
|
1月前
|
存储 安全 前端开发
ssm226基于jsp的快递管理系统的开发
ssm226基于jsp的快递管理系统的开发
|
6月前
|
存储 Java 关系型数据库
JSP考试质量分析系统myeclipse开发mysql数据库bs框架java编程web网页结构
JSP 考试质量分析系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
126 0
|
3月前
|
SQL 前端开发 Java
JSP技术详解及其在Web开发中的应用
【1月更文挑战第2天】本文将对JSP(Java Server Pages)技术进行详细的介绍和分析。JSP是一种基于Java的服务器端编程技术,它允许开发者在HTML或XML等文档中直接嵌入Java代码片段,从而动态地生成Web页面内容。本文将首先阐述JSP的基本原理和工作机制,然后讨论其在Web开发中的各种应用场景,包括表单处理、数据库访问、会话管理等,并通过实例代码展示JSP的实际应用。最后,本文将对JSP的优缺点进行评述,并对未来的发展趋势进行展望。
133 10
|
3月前
|
XML 前端开发 Java
Web开发: 什么是Servlet和JSP?
Web开发: 什么是Servlet和JSP?
79 0
|
5月前
|
Java
JSP中9个隐含对象
JSP中9个隐含对象
|
6月前
|
Java 关系型数据库 MySQL
JSP考试报名管理系统myeclipse开发mysql数据库bs框架java编程web网页结构
二、功能介绍 (1)权限管理:对权限信息进行添加、删除、修改和查看 (2)用户管理:对用户信息进行添加、删除、修改和查看 (3)公告管理:对公告信息进行添加、删除、修改和查看 (4)考试科目管理:对考试科目信息进行添加、删除、修改和查看 (5)考试安排管理:对考试安排信息进行添加、删除、修改和查看 (6)报名管理:对报名信息进行添加、删除、修改和查看,审核, (7)用户登录、身份验证 三、注意事项 1、管理员账号:admin密码:admin 数据库配置文件DBO.java 角色:普通用户,管理员 2、开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql
109 0