为了账号安全,请及时绑定邮箱和手机立即绑定

Web前端开发之JSP学习

标签:
PHP Java Html/CSS

JSP--Java Server Page(使用tomcat,Jboss服务器),在服务器端执行
ASP--Active Server Page(使用IIS(Internet Information Server)服务器)
PHP--Hypertext Preprocessor
LAMP:Linux+Apache+MySql+PHP

page指令:通常位于jsp页面的顶端,同一个页面可以有多个page指令。
include指令:将一个外部文件嵌入到当前 JSP 文件中,同时解析这个页面中的 JSP 语句。
taglib指令:使用标签库定义新的自定义标签,在JSP页面中启用定制行为。
注释:HTML:<!---->
JSP:<%-- --%>
<%
// 单行注释
/ / 多行注释
%>

<%
//Java程序代码
int num=100;
System.out.println("num="+num);
/
注意:在脚本里面不能定义方法
脚本里声明的变量是局部变量。
/
%>
在JSP页面中执行的java代码。
语法:<% Java代码%>
脚本里声明的变量是局部变量。(jspService())
脚本里不能声明方法。

在JSP页面中定义变量或者方法。
语法:<%! Java代码%>
声明的变量相当于类的属性。
声明的方法相当于类的成员方法。

在JSP页面中执行的表达式。
语法:<% =表达式 %> //注意:表达式不以分号结束
注意:out对象不能用在表达式里面

一个JSP页面对应一个Servlet实例,这个实例只有一份存在,存在服务器的内存里面
不同的客户端访问的是同一个Jsp对象的实例,服务器是通过多线程的方式来处理,存在并发访问,同步访问问题。

JSP内置对象是 Web 容器创建的一组对象,不使用new关键就可以使用的内置对象。
九大内置对象:out,request,response,session,application,config,page,pageContext,exception
所谓“作用域”就是“信息共享的范围”,也就是说一个信息能够在多大的范围内有效。 4个JSP内置对象的作用域分别为:application(4)、session(3)、request(2)、page(1)
名称 作用域 值
application 在所有应用程序中有效 4
session 在当前会话中有效 3
request 在当前请求中有效 2
page 在当前页面有效 1

application:服务器启动到关闭的整段时间,在这个作用域内设置的信息可以被所有应用程序使用。application作用域上的信息传递是通过ServletContext实现的。
session:同一浏览器对服务器进行多次访问,在这多次访问之间传递信息,就是session作用域的体现。session是通过HttpSession接口实现的。
request:代表着用户的一次请求, 一个HTTP请求的处理可能需要多个Servlet合作,而这几个Servlet之间可以通过某种方式传递信息,但这个信息在请求结束后就无效了。
page:作用范围仅限于用户请求的当前页面,对于page对象的引用将在响应返回给客户端之后被释放,或者在请求被转发到其他地方后被释放。对page对象的引用通常存储在pageContext对象中。

out对象是JspWriter类的实例(字符流),是向客户端输出内容常用的对象。常用方法如下:
void println() 向客户端打印字符串
void clear() 清除缓冲区的内容,如果在flush之后调用会抛出异常
void clearBuffer();清除缓冲区的内容,如果在flush之后调用不会抛出异常
void flush() 将缓冲区内容输出到客户端
int getBufferSize() 返回缓冲区以字节数的大小,如不设缓冲区则为0
int getRemaining() 返回缓冲区还剩余多少可用
boolean isAutoFlush() 返回缓冲区满时,是自动清空还是抛出异常
void close() 关闭输出流

缓冲区:Buffer,所谓缓冲 区就是内存的一块区域用来保存临时数据。

Request对象:
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。
它是HttpServletRequest类的实例。request对象具有请求域,即完成客户端的请求之前,该对象一直有效。
常用方法如下:
String getParameter(String name) 返回name指定参数的参数值
String[] getParameterValues(String name) 返回包含参数name的所有值的数组
void setAttribute(String,Object);存储此请求中的属性。
object getAttribute(String name) 返回指定属性的属性值
String getContentType() 得到请求体的MIME类型
String getProtocol() 返回请求用的协议类型及版本号
String getServerName() 返回接受请求的服务器主机名
int getServerPort() 返回服务器接受此请求所用的端口号
String getCharacterEncoding() 返回字符编码方式
void setCharacterEncoding()设置请求的字符编码方式;
int getContentLength() 返回请求体的长度(以字节数)
String getRemoteAddr() 返回发送此请求的客户端IP地址
String getRealPath(String path) 返回一虚拟路径的真实路径
String request.getContextPath() 返回上下文路径
request.getRequestDispatcher("URL").forward(requst,response);//请求转发

解决中文乱码问题:
1.以post方式提交表单
<% request.setCharacterEncoding("utf-8") %> //这种方式只能解决以post提交表单的中文乱码
2.以get方式提交表单,或者通过URL地址传递中文参数
要修改Tomcat服务器中的conf文件夹下的server.xml中的配置如下:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8"/>
修改完后重新启动服务器

response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。response对象具有页面作用域,即访问一个页面时,该页面内的response对象只能对这次访问有效,其它页面的response对象对当前页面无效。常用方法如下:
String getCharacterEncoding() 返回响应用的是何种字符编码
void setContentType(String type) 设置响应的MIME类型
PrintWriter getWriter() 返回可以向客户端输出字符的一个对象(注意比较:PrintWriter与内置out对象的区别)
sendRedirect(java.lang.String location) 重新定向客户端的请求

请求重定向:客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地址会改变。
请求转发:服务器端行为,request.getRequestDispatcher().forward(req,resp);是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变。

Session:表示客户端与服务器的一次会话。具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。
在服务器的内存中保存着不同用户的session。
不同的浏览器访问同一个页面,会产生不同的会话
Session对象是一个JSP内置对象,它在第一个JSP页面被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要Session对象。它是HttpSession类的实例。常用方法如下:
long getCreationTime() 返回SESSION创建时间
public String getId() 返回SESSION创建时JSP引擎为它设的唯一ID号
public void setAttribute(String name, Object value)使用指定名称将对象绑定到此会话。
public Object getAttribute(String name)返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则返回 null。
String[] getValueNames() 返回一个包含此SESSION中所有可用属性的数组
int getMaxInactiveInterval() 获得本次会话的最长生存期限(单位秒) //默认是30分钟
setMaxInactiveInterval() 设置本次会话的最长生存期限(单位秒)

点击查看更多内容
19人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消