jsp学习(一)
来源:互联网 发布:etap电气仿真软件 编辑:程序博客网 时间:2024/06/05 14:38
jsp基础
1 JSP页面元素与内置对象
1. page指令:常用的page指令有8个:language、extends、import、errorPage、isErrorPage、contentType、isThreadSafe、session
1. language设置JSP页面中用到的语言,默认值是“Java”语法如:<%@pagelanguage=”java”%>
2. extends设定目前JSP页面要继承的父类,一般不需要进行设置,默认是HttpJspBase。例如当前页面要继承mypackage包下的myclass类,相应的声明为:<%@page extends=”mypackage.myclass”%>
3. import设置目前JSP页面中要用到的Java类,可以是sunjdk中的也可以使自己定义的,<%@page import=”java.sql.*,java.util.*”%>
4. errorPage用来设定当JSP页面出现异常时所要转向的页面,如果不设定就在默认的当前页面显示<%@page erroPage=“/error/error_page.jsp”%>
5. isErrorPage用来设定当前的JSP页面是否作为传回错误页面的网页默认值是false,如果设定为True。容器则会在当前的页面中生成一个exception对象。errorPage与isErrorPage: <%@pagelanguage=”java”errorPage=”3-5page”contentType=”text/html;charset=GBK”%> 另外3-5jsp:<%@pagelanguage=”java”isErrorPage=”true”contentType=”text/html;charset=GBK”%>
6. contentTy用来设定传回网页的文件格式和编码方式,一般使用“Text/html;charset=GBK”
7. isThreadSafe定义JSP容器执行JSP程序的方式,默认是“True”代表JSP容器会以多线程方式运行JSP页面,当设定为“false”时为单线程
8. session定义当前JSP页面中是否要用到session默认为“True”
2. include指令:用来指定怎样把另一个文件包含到当前的JSP页面中,这个文件可以是普通的文本文件,也可以是一个JSP页面。<%@ include file=”logo.htm”%>采用include指令可以实现JSP页面的模版化,是开发维护变的非常简单
3. taglib指令:实际上是执行Java代码。语法:<%@taglib uri=”tagLibraryURI”prefix
=”tagPrefix”%>
2 操作指令
1. jsp:inclulde指令:用于在当前JSP页面中加入静态和动态的文件资源;格式:<jsp:Include page=”test.htm”/>指令必须以“/”结束
2. jsp:forward指令:用于把当前的JSP页面转移到另一个页面上,基本语法是:<jsp:forward page=”test2,jsp”/>
3. jsp:forward指令:可以在执行forward操作动作时追加参数,按照“名字/值”的方式进行传递,可以把其与forward指令结合到一起使用:<jsp:forward page=”mypage.jsp”><jsp:paramname=”param1” value=”value1”/></forward>可以使用request对象来读取这些参数的值。
Jsp:useBean、jsp:setProperty、jsp:getProperty都是用来操作javaBean的。
3 JSP代码
1. 变量和方法:变量的声明时使用<!% %>标记,标记!是声明变量类似与static
4 JSP隐含对象
1. out对象:把信息回送到客户端的浏览器中。out.write()和out.print()相同。newLine()功能是输出一个换行符,out.flush()输出缓冲的内容,out.close()关闭输出流,
2. response对象:最常用到的是sendRedirect()方法,可以使用这个方法将当前客户端的请求转到其他页面上,相应的代码格式为:response.sendRedirect(“URL地址”)而且地址栏也会显示URL的路径
3. 动态contentType响应:把相应的文件方式发送给客户端。常用的:text/plain(文本文件)、application/x-msexcel(Excel文件)、application/msword(word文件)
4. HTTP文件头响应:利用JSP动态改变客户端的响应,使用语法是:response.setHeader(),比如让客户端每隔5秒刷新一次:response.setHeader(“Refresh”,”5”);
5. 设置缓冲区:为了确保显示的正确性,需要将禁用页面缓冲,否则会显示其它用户的一些信息,解决办法需要在每个JSP的页面中加入语句如:response.setHeader(“Pragma”,”No-cache”);response.setHeader(“Cache-Control”,”no-cache”);response.setDateHeader(“Expires”,-1);使得浏览器每次请求页面的时候都取重新编译运行
6. request对象:当客户端请求一个JSP页面时,JSP容器会将客户端请求信息包装在这个request对象中,请求信息包括:头信息、系统信息、请求方式(get/post)请求的参数名称和参数值。如:
request.getParameter(“参数“);取得所有参数:Enumeration parames=request.getParameterNames
();使用while(params.hasMoreElements())循环输出值:参数名:current_param=(String)parames
.nextElement();参数值:request.getParameter(current_param);
1. Request中常用方法有:
(1) 客户使用协议:request.getProtocol();
(2) 接受客户提交信息的页面request.getServletPath();
(3) 接受客户提交信息的长度:requset.getContentLength()
(4) 提交的方式:request.getMethod()
(5) 获取HTTP头文件中User-Agent的值:requset.getHeader(“User-Agent”);
(6) 获取头文件accept的值:requset.getHeader(“accept”);
(7) 获取host的值:requset.getHeader(“Host”)
(8) 获取accept-encoding的值:requset.getHeader(“accept-encoding”);
(9) 客户的ip地址:requset.getRemoteAddr();
(10)客户机的名称:requset.getRemoteHost()
(11)获取服务器的名称:requset.getServerName()
(12)获取服务器的端口号:requset.getServerPort();
7.汉字问题的解决办法:当利用request.getParameter的到form表单中元素时,默认字符编码为ISO-8859-1这种编码方式不能正确显示汉字。有三种解决方法:
1.执行操作前设置request的编码格式:request.setCharacterEncoding(“GBK”);
2.转化字符编码:str=request.getParameter(“name”);byte b[]=str.getBytes(“ISO-8859-1”);
Str=newString(b);
3.使用过滤器:把CharSetFilet.java放在conn包下面,servlet.jar放在lib包下面,在web.xml中配置:<filter>
<filter-name>encoding</filter-name>
<filter-class>com.cn.comm.CharSetFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
com.cn.comm.CharSetFilter包下的java文件
public class CharSetFilter extends HttpServlet implements Filter {
private FilterConfig filterConfig;
private String coding="GBK";
boolean showFlag=false;
public void init(FilterConfig filterConfig) throws ServletException {
//初始化
this.filterConfig = filterConfig;
this.coding=filterConfig.getInitParameter("encoding");
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) {
//进行过滤处理
try {
//System.out.println("使用" + coding + "编码方式对请求进行编码");
HttpServletRequest req = (HttpServletRequest) request;
/*对所有请求的页面数据指定编码格式:防止中文乱码*/
req.setCharacterEncoding(coding);
/*在处理权发送给下一个过滤器,如果没有下一个过滤器,就将请求发送给目标*/
filterChain.doFilter(request, response);
} catch (ServletException sx) {
sx.printStackTrace();
filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
iox.printStackTrace();
filterConfig.getServletContext().log(iox.getMessage());
}
}
public void destroy() {
//销毁过滤器
this.filterConfig=null;
}
}
8.application对象:站点所有用户共用一个application对象,开启就被创建直到网站关闭。
属性有:
(1) publicvoid setAttribute(String key,Object obj):
(2) publicObject getAttribute(String key);
9.session对象:仅次于application,它保存的对象在当前用户连接的所有页面中都是可以被访问到的。当用户页面之间跳转时,存储在session中的值不会被清除。Session中常用到的方法是:setAttribute()、getAttribute()、removeAttribute()
10.cookie对象:使用如下:写入cookie:String str=”zhourunf” ;cookiec=new cookie(“name”,str);
response.addCookie(c);读出cookie:cookiecookies[]=request.getCookies();
for(inti=0;i<cookies.length;i++)
{if(cookies[i].getName().equals(“name”))
out.println(cookies[i].getValue());}
- JSP学习(一)
- jsp学习(一)
- jsp 学习(一)
- jsp学习(一)
- jsp学习(一)
- JSP学习(一)
- JSP学习(一)
- JSP学习笔记(一):JSP基础
- JSP学习笔记(一):JSP标签
- JSP学习(一)-------JSP概述
- jsp---学习笔记(一)
- JSP学习笔记(一)
- JSP学习笔记(一)
- JSP学习笔记(一)
- JSP学习笔记(一)
- JSP基础学习(一)
- JSP基础学习(一)
- jsp学习笔记(一)
- Python字符编码详解
- java架构师之路:JAVA程序员必看的15本书的电子版下载地址
- Python开源网络爬虫或网络蜘蛛scrapy入门遇到问题
- 《单例模式》之双重检查加锁DCL(结合SQLiteOpenHelper实例)
- IPad读写U盘的解决方案
- jsp学习(一)
- 浅谈linux字符设备注册
- iOS crash log report tools
- hdu 2579 BFS
- 解决聚合函数的问题(一)
- 一个无聊的递归冒泡排序程序
- 移植linux-3.0.62 + busybox最小系统到单板TQ2440
- 从P1到P7——我在淘宝这7年
- python openssl 读取 crl 吊销 证书