request对象其实是服务器端接受客户端请求的信息的,在接受信息之后做进一步处理
常用方法:getParameter(),getParameterValues(),getParameterNames()
在接受参数之后若页面中包含中文则会出现乱码,之所以会出现这样根本原因就是此文字不在正常的编码范围之中,解决方法有:
- 对所有的数据进行在编码:ISO8859-1编码
- String类中的getBytes("ISO8859-1");
- getBytes()方法的定义:Public byte[] getBytes("encoding")再将byte数组重新变为字符串。e.g.String name=new String(request.getParameter("uname").getBytes("ISO8859-1"));
- 设置同意的字符编码
- Public void setCharacterEncoding(String env)
在J2EE中,最大的问题是乱码问题–要做到国际通用
若传递的内容是数组(复选框的情况下、多个下拉列表项)使用request的一下方法取得数据:
- Public String[] getParameterValues(String name)
隐藏域是开发中较为常用的表单控件,其作用是将内容隐藏起来,使用户不能修改,之后随表单一起提交到服务器上显示。
地址重写:
- 通过地址重写,可以将内容传递到服务器端–服务器端只认HTTP协议而不管接受的内容是以何种形式传递过来的,若有多个参数用&连接
★getParameterNames主要用来接受参数名称
- Public Enumeration getParameterNames()
取得客户端IP地址的方法:Public String getRemoteAddr()
★★总结:
- 只要是客户端的信息,在服务器端都可以通过request对象取得
- 只需要注意中文乱码问题即可
- 必须掌握的方法getParameter(),getParameterValues(),setCharacterEncoding()
alex Java Java, jsp, request, 乱码
Java中的对象必须先实例化再用:分配内存空间
在JSP中,由WEB容器对对象进行实例化
常见对象及作用域:
| 对象名 |
类型 |
作用域 |
| request |
javax.servlet.ServletRequest的子类 |
Request |
| response |
javax.servlet.ServletResponse的子类 |
Page |
| pageContext |
javax.servlet.jsp.PageContext |
Page |
| session |
javax.servlet.http.HttpSession |
Session |
| application |
javax.servlet.ServletContext |
Application |
| out |
javax.servlet.jsp.JspWriter |
Page |
| config |
javax.servlet.ServletConfig |
Page |
| page |
java.lang.Object |
Page |
| exception |
java.lang.Throwable |
Page |
!!最重要的概念:四种属性的保存范围
- 设置属性:Public abstract Void setAttribute(java.lang.String name,java.lang.Object attribute) ★★属性名称为字符串、属性值可以为任意对象
- 取得属性:Public abstract Void setAttribute(java.lang.String name)
四种属性保存范围:
- 在一个页面范围内 :page
- 在一次服务器请求范围内:request
- 在一次会话范围内:session
- 在一个应用服务器范围内:application
page范围:
- 在jsp中设置一个页的属性范围必须通过pageContext完成
- pageContext属性范围是最为重要的JSP属性之一,但是如果使用纯粹的JSP代码开发,则此属性显示不出用处
request范围★:
- 将属性保存在一次请求范围内的前提是,必须使用服务器端跳转<jsp:forward />
- 应用点:MVC设计模式、Struts、Webwork
session范围:
- 只保留一个用户的信息
- 只要设置了属性,则不管是什么跳转都可以取得属性
- 与session有关的任何打开页面都可以取得session
- ★session的主要功能:用于验证用户是否登陆
application范围:
- 只要设置一次则所有的网页窗口都可以取得数据
- 如果要释放application资源只能重新启动服务器
application、session、request都需要跨多个页
保持性能不降低的原则:若能用request就不不要使用session,能使用session就不要使用application
★★重要概念:
- pageContext默认情况下表示一个页面的保存范围
- 另一种设置属性的方法Public abstract Void setAttribute(java.lang.String name,java.lang.Object attribute,int scope)
- scope可以取:Public Static final int APPLICATION_SCOPE、Public Static final int SESSION_SCOPE、Public Static final int REQUEST_SCOPE、Public Static final int PAGE_SCOPE
- ★★总结:四种属性范围都是依靠pageContext展开的,但是在开发中,往往使用session、request范围最多。
- 四种属性范围是整个J2EE WEB端开发必须深刻记住的概念,包括设置属性和取得属性的参数类型,返回值类型。
alex Java Java, jsp, 对象, 属性, 范围
include指令: <%@include file="uri"%> e.g.<%@include file="hello.jsp"%>
- include命令可以包含任意文件,它包含的是文件的内容。但是在一个jsp页面中,只能有一组<html>、<head>、<body>
- 原则:在开发中被包含的文件只写显示部分的HTML代码,主体代码不要出现
- 包含的时候不区分文件名称、后缀,只是将内容包含进来
包含语句<jsp:include>:
- <jsp:include page="uri" /> 或者 <jsp:include page="uri" flush="true"><jsp:param name="参数名称" value="参数值" /></jsp:include>
- 若使用后一种语句可以向被包含的页面之中传递参数,如果是传递参数,则所包含的页面必须是JSP页面,必须是动态页面
- 若包含的是JSP页面,则自动进行动态处理,若是非动态文件,则只是将内容包含进来
- 这种语句与HTML代码相似,称为标签指令形式
- 标签指令形式代码必须完结 </XXX:XXXX>
- 标签指令形式代码必须写在Scriptlet(<%…..%>)之外
<%@include file="uri"%>:只是将页面的内容静态的包含进来,若被包含的页面有JSP代码,则执行此代码而不管被包含的页面文件后缀如何 // 先包含后处理
<jsp:include page="uri"/>:若被包含的文件内容是静态的,则直接将内容包含进来,但是不处理,如果被包含的页面是动态的,则先执行,再把结果包含进来显示 // 先处理后包含
两者的区别:
- <%@include%> :所有代码包含进来,一起进行处理,把所有代码合在一起
- <jsp:include>:所有代码分别处理,处理完成之后再将代码的显示结果(处理结果)包含进来
跳转语句<jsp:forward>
- <jsp:forward page="uri" /> 或者 <jsp:forward page="uri" flush="true"><jsp:param name="参数名称" value="参数值" /></jsp:forward>
- <jsp:forward>也属于标签指令,使用也必须完结
- <jsp:forward>语句属于无条件跳转语句
- 使用此跳转语句,页面内容是进行了跳转,但是地址栏的地址没有变化,如果没有变化,意味着用户的请求依然没有改变,即<jsp:forward>属于服务器跳转
alex Java include, jsp, 指令, 标签指令, 语法
注释类型:
- 显示注释:HTML注释,此注释会发送到客户端
- 隐式注释:JAVA注释,此注释不会发送到客户端
在JSP中可以使用三种注释:
- <!– 注释内容 –>
- <% //JAVA注释内容 %>或者<% /*多行内容*/ %>
- <%– JSP注释 –%>
声明语句:格式:<%!声明语句%> 举例:<%!String text="Hello World!" %>
表达式:格式:<%=表达式%>,用来输出值,类似于out.println();
- 在实际开发中尽量少用out.println();输出而用<%=表达式%>,这么做的目的是达到HTML和JAVA代码的分离
脚本代码(Scriptlet):格式:<%代码段%>,用来写具体的JAVA代码或者声明局部变量
- <%! %>和<% %>声明的变量区别是:<%! %>只赋一次值
JSP是一种动态的WEB程序,必须有交互功能
HTML与服务器的交互主要途径是表单
JSP接受传递过来的参数的方法:String str=request.getParameter("参数名称");
所有的JSP代码最终都是拼凑出来的,不是固定的,由WEB容器拼凑出来的
form表单的提交方式:
- post:提交的内容不会被显示,没有长度要求
- get: 提交的内容会被显示出来,地址栏的长度只有4K~5K,大数据则无法显示
范例:打印一个表格,行数和列数由用户输入
阅读全文…
alex Java jsp, page指令, 语法
前言:前段时间学习了JAVA,主要是Stardard Edition部分,由于是自学看的不是太仔细只是了解了个大概,趁现在放假在家空余时间比较多所以想继续学下去,但是JAVA的知识体系实在是太庞大,所以只能一步一步来,所以这个寒假的主要任务就是学习下JSP,顺带巩固JAVA基础部分。由于自己看书实在是太枯燥了,所以我就在电驴上找了JSP的视频教程跟着学然后再照着练练巩固下,每天看两集,第二天写下学习笔记,这样希望能把前一天学的记住。
言归正传……(我装的是Tomcat 6.0.14版本)
Tomacat是一个WEB容器,所有的J2EE WEB程序可以在此处运行。常见的WEB容器还有WebLogic、WebSphere。
Tomcat的默认端口号是8080,这个数值可以在安装过程中修改也可以在conf/server.xml中修改。
Tomcat是根据系统的%JAVA_HOME%变量值选择系统中的JDK。
Tomcat目录主要文件夹作用
- bin目录:存放启动和关闭Tomcat的脚本
- conf目录:存放不同配置文件,其中比较重要的是server.xml(Tomcat的主要配置文件)和web.xml
- work目录:存放JSP编译后的.class文件
- webapps目录:存放WEB应用程序
- lib目录:存放所有需要的各种jar包
配置Tomcat方式有两种:手工配置–修改conf/server.xml文件、管理控制台配置
- 注意:修改server.xml之后要重新启动Tomcat服务器才能使配置生效
配置虚拟目录的要求
阅读全文…
alex Java jsp, tomcat, 虚拟目录
最新评论