JSP基础笔记

JSP开发模式:
1.小型应用:JSP+javaBeans
2.大型应用:JSP+javaBeans+Servlet


编码修改法:
1.<%@ pageEncoding="gb2312" %>
2.<%@ content Type="text/html; chavset="gb2312" %>


导入java包:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>


导入Jar或者tld文件
用<%@ taglib uri="" prefix="" %>导入方法
1.自定义uri:
<1>首先得在web.xml中加入桥
<jsp-config>  
    <taglib>  
          <taglib-uri>自定义的uri</taglib-uri>  
         <taglib-location>/WEB-INF/tld/c.tld</taglib-location>  //文件相对路径
    </taglib>  
 </jsp-config>
<2>调用
头部:<%@ taglib prefix="c" uri="自定义的uri" %>
body:<c:out value="${param.username}"/> //Jar或者tld文件的值
2.标准定义--直接调用
头部:<%@ taglib uri="/WEB-INF/tlds/c.tld" prefix="c"%>
body:<c:out value="${param.username}"/> //Jar或者tld文件的值


JSP脚本元素
1.声明:<%!~~~%>      //声明变量或方法
2.表达式:<%=~~~%> //变量或有返回值的方法名
3.脚本程序段:<%~~~%> //java语言


#####################JSP动作标签#####################
一,include(包含)标签
1:<jsp:include page="top.jsp">:先将top.jsp中的java脚本和jsp指令都执行完毕以后再将top.jsp页面加入到引用页面中。
2:<%@ include file="top.jsp"%>静态读取:则是将top.jsp的整个页面不加解析(无论是脚本还是指令)统统读入到引用页面中,然后和引用页面一起进行解析(即开始执行脚本和指令)。
3:区别:其实上边的两条就是区别,但是需要注意的是用<%@ include file=""%>的时候被引用页面中不能再出现其他网页标签和page指令了,否则会冲突的。


二,forward(转发)标签
转发标签,网址不变,内容转换。


三,useBean(传递java代码)标签
<jsp:useBean>多与<jsp:setProperty><jsp:getProperty>一起使用
<jsp:useBean id="实例名" scope="保存范围" class="包名.类名">
注、保存范围有:page--当前页面   request--任何执行相同请求的JSP   session--会话层生命周期中   application--相同的应用内都可以使用


四,setProperty(建立所有权)标签
<jsp:setProperty name="实例名" property="属性名" param="表单元素名">
注、属性名为java内名称  当实例名和属性名相同时:可全部关联-property="*";


五,getProperty(引用所有权)标签
<%String str=request.getParameter("*");%> //其中*为封装的参数


六,plugin(声明插件)标签
用于插入javaApplet小程序或javaBean,能在客户端运行,并根据浏览器版本转换成<object>或者<embed>HTML标签。flush="true"--浏览后清除缓存


七,fallback(无网络链接的页面,后备物)标签
当plugin转换失败时,可用<jsp:fallback>~~~~</jsp:fallback>动作标签显示提示信息
注、其中~~~~为提示信息文本


八,param(参数)标签
param可向Applet或javaBean传递参数。
注、<jsp:param name="参数调用时名称" value="实际参数值">


九,params(多个参数)标签
<jsp:params>
<jsp:param name="参数调用时名称" value="实际参数值">
<jsp:param name="参数调用时名称" value="实际参数值">
<jsp:param name="参数调用时名称" value="实际参数值">
</jsp:params>
注、可传递多个参数


#####################JSP动作标签END#####################


#####################JSP内置对象#####################
向客户端输出信息对象---out---javax.servlet.http.jsp软件包的抽象类JspWriter的实例
<%out.println("内容")%> <%write()%> <%out.close()%>--关闭输出流


相应客户端请求对象---reponse---javax.servlet.http.HttpServletResponse接口的实例
<%=reponse.方法名%>
常用的方法名有:
sendRedirect() //客户端跳转,名称变化,重定向请求,产生页面跳转。
addCookie() //将cookie信息写入客户端硬盘
getWriter() //获取PrinterWriter类型的相应流对象
setHeader() //设置指定的Http文件的头信息
setContentType() //设置相应的MIME类型,改变ContentType属性


请求信息对象---request---javax.servlet.http.HttpServletRequest接口的实例对象
<%=request.方法名%>
常用的方法名有:
String getParameter("*"); //返回*指定参数的参数值
String[] getParameterValues("*") //返回包含参数*的所有值的数组
void setAttribute("name","value") //设置属性name的属性值value
String getRealPath(".") //返回当前的物理路径(不含文件名)
String getContextPath(".") //返回当前的相对路径(不含文件名)
String getRequestURL() //返回请求资源的绝对路径(含文件名)
String getRequestURI() //返回请求资源的相对路径(含文件名)
String getQueryString() //返回http请求时传递的参数
request.getHeader(String name) //获取来访者地址,上一级地址
request.getInitParameter(String name) //获取InitParameter内参数
String getRemoteAddr() //返回发送此请求的客户端IP地址
String getServerName() //返回接受请求的服务器主机名
String getCharacterEncoding() //返回字符编码方式
setCharacterEncoding("code") //设定接受信息的编码,code通常是utf-8或者gbk
getSession() //返回与请求相关的session
getCookies() //返回客户端的所有Cookie,结果为一个Cookie数组


会话信息对象---session---javax.servlet.http.HttpSession接口的实例化对象
<%=session.方法名%>
常用的方法名有:
getId() //返回JSP引擎创建session对象时设置的唯一ID号
isNew() //返回服务器创建的一个session,客户端是否已经加入
setAttribute(属性名,值) //设置指定名称的属性值
getAttribute(属性名) //获取指定的属性值
getValueNames() //返回一个包含此session中所有可用属性的数组
removeValue(String name) //删除session中指定的属性
setMaxInactiveInterval(int n) //设置session信息的有效期,默认值为1800秒
getMaxInactiveInterval //获取session的有效期
invalidate() //取消session,使其不可用


所有会话信息共享对象---application---javax.servlet.ServletContext接口的实例化对象
<%=application.方法名%>
常用的方法名有:
setAttribute(属性名,值) //设置指定名称的属性值
getAttribute(属性名) //获取指定的属性值
getServerInfo() //返回当前版本Servlet编译器的信息
getRealPath() //得到虚拟目录对应的物理目录(绝对路径)
getContextPath() //获取当前的虚拟路径名称(相对网站根目录而言)
getAttributeNames() //获取所有属性的名称
removeAttribyte() //删除指定属性


注:session是局部变量,application是全局变量。前者关闭或重启客户端消失,后者关闭或重启服务器消失


Cookie信息的建立与运用---Cookie---javax.servlet.http.Cookie类来处理
将由下面实例阐述Cookie的用法
<%
Cookie  name=new  Cookie("属性名","属性值"); //创建对象
response.addCookie(name); //将cookie信息写入客户端硬盘
Cookie[] c=request.getCookies(); //获取客户端设置的全部cookie
for(int i=0;i<c.lenght;i++)
{
out.println(c[i].getName()+".."+c[i].getValue()) //输出(”属性名..属性值“)
}
%>
常用的方法名有:
Cookie(String name,String value) //构造方法,实例化对象
Cookie[] getCookies() //获取客户端设置的全部cookie
getName() //获得cookie的属性名
getValue() //获得cookie的属性值
setMaxAge(int) //设置cookie的保存时间,单位为秒


页面上下文对象---pageContext---javax.servlet.jsp.PageContext抽象类的实例
通过pageContext可访问页面内所有对象(session和application等)或者重新定向客户端请求
常用的方法名有:
forward() //页面重定向到另一个页面或者servlet
getSession() //返回当前页面的HttpSession对象
getRequest() //返回当前页面的request对象
getResponse() //返回当前页面的response对象
setAttribute(属性名,属性值) //设置属性在page范围内
getServletContext() //获取当前页的ServletContext对象
getServletConfig() //获取Servlet的配置参数
getRealPath(String path) //获取相对路径的物理路径


Servlet的配置对象---config---javax.servlet.SerletConfig接口内
<%=ServleConfig.方法名%>
常用的方法名有:
getServletName() //获取当前的Servlet名称
getServletContext() //获得当前的Servlet上下文对象
getInitparameter() //获取指定的初始参数的值
request对应的内置对象为HttpServletRequest
response对应的内置对象为HttpServletResponse
session对应的内置对象为HttpSession,调用session之前需要request.getSession()实例化之后才可以使用
application对应的内置对象为:ServletContext,this.getServletContext()调用


Servlet转发:
requset||response作为转发器RequestDispatcher 提供两个方法
forward(req,res);
include(req,res);
getServletContext().getRequestDispacher("目标位置").forward(req,res);


向浏览器输出:
response.setContentType("text/html;charset=utf-8");//防止中文乱码
PrintWriter x=response.getWriter();x.println("输出内容");


可接入Servlet接口,也继承GenericServlet,HttpServlet实现
Servlet 接口继承方法方法:
init()  //初始化
service() //访问时调用方法
getServletConfig() //获取Servlet配置信息
getServletInfo() //获取Servlet信息
destroy() //销毁实例(关闭浏览器时)
继承GenericServlet仅仅用Service()即可完成
继承HttpServlet拥有两个方法dopost(),doget();分别对应两种提交方式
<servlet>
<servlet-name>w</servlet-name> //过滤器名
<servlet-class>a.Whata</servlet-class> //包.类
</servlet>
<servlet-mapping>
<servlet-name>w</servlet-name> //过滤器名,仅用于关联
<url-pattern>/wh</url-pattern> //可与过滤器名不一样,但不建议,决定访问路径和访问关键字
</servlet-mapping>


监听器 javax.servlet.http.HttpSessionListener接口,用于查看在线人数
sessionCreated(HttpSessionEvent se);增加
sessionDestroyed(HttpSessionEvent se);减少
<listerner>
<listener-class>包.类</listener>
</listerner>


过滤器 javax.servlet.Filter单一过滤,方法数三,javax.servlet.FilterChain,过滤链,方法数一
接口实现的方法
init()、destroy()、doFileter(req,rqs,chain),过滤链需要在doFileter方法结尾转发给下一个过滤器chain.doFileter(req,res);
<filter>
  <filter-name>utf-8</filter-name> //过滤器名称,仅用于关联
  <filter-class>file.utf</filter-class> //包.类
<init-param>
<param-name>名称</param-name>
<param-value>值</param-value> //下面有调用方法
</init-param>
</filter>
<filter-mapping>
  <filter-name>utf-8</filter-name> //过滤器名称,仅用于关联
  <url-pattern>/*</url-pattern> //过滤路径
</filter-mapping>


上传下载直接调用做好的代码。JSP知识就这么多了!


附一:web.xml相关资料
<?xml version="1.0" encoding="utf-8"?>//版本 编码
<!DOCTYPE web-app="/webapp_2.3dtd" />//dtd文档位置,可ctrl查看位置
<web-app>
<icon>
<small-icon>/images/app_small.gif</small-icon>//应用小图标
<large-icon>/images/app_large.gif</large-icon>//应用大图标
</icon>
<display-name>名称</display-name>
<description>注释</description>
</web-app>


<distributable/>//是否支持集群服务器,多个服务器


<context-param>
<param-name>名称</param-name>
<param-value>值</param-value>
</context-param>


<filter>
  <filter-name>utf-8</filter-name>
  <filter-class>file.utf</filter-class>
<init-param>
<param-name>名称</param-name>
<param-value>值</param-value>//下面有调用方法
</init-param>
</filter>
<filter-mapping>
  <filter-name>utf-8</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>


FilterConfig f;
f.getInitParamter("名称");


<listerner>
<listener-class>包.类</listener>
</listerner>//监听器


<servlet>
<servlet-name>servlet名</servlet-name>
  <servlet-class>包.类</servlet-class>
<init-param>
<param-name>名称</param-name>
<param-value>值</param-value>//下面有调用方法
</init-param>
<run-as>
<load-on-startup>优先级(必须大于0的整数,越小优先级越高)</load-on-startup>
</run-as>
</servlet>
<servlet-mapping>
  <servlet-name>servlet名</servlet-name>
  <url-pattern>/*</url-pattern>//激活区域,激活调用
</servlet-mapping>


<session-config>
<session-timeout>存在时间(s)</session-timeout>
</session-config>//与HttpSession.setMaxInactiveInterval方法相同


<mime-mapping>
<extension>htm</extension>
<mime-type>text/html</mime-type>
</mime-mapping>


<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>


<error-page>
<error-code>404</error-code>
<location>/error.html</location>
</error-page>//错误转向


<error-page>
<exception-type>包.类</exception-type>
<location>/error.html</location>//抛出异常处理界面
</error-page>


<taglib>
<taglib-uri>http://anlemusic.cn</taglib-uri>
<taglib-location>/WEB-INFx.tld</taglib-location>
</talib>//源文件地址密封


保护资源
<security-constraint>
<web-resource-coolection>
<web-resource-name>Test</web-resource-name>//保护名称
<url-pattern>/test/*</url-pattern>//保护目录
<http-method>post</http-method>//保护命令,如:(get,post,put,delete,head,options,trace)
</web-resource-coolection>
</security-constraint>


<security-constraint>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>//访问权


<security-constraint>
<user-data-constraint>
<transport-guarantee>NONE|INTEGRAL|CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>//任何传输保护,分别为:不加限制,防止截取,阅读方式传输


//conf/tomcat-users.xml中用户名密码
<tomcat-users>
<user name="admin" password="admin" roles="admin">
</tomcat-users>




附二:


response.setContentType("x");


application/msword doc Microsoft Word
application/octet-stream bin dms lha lzh exe class可执行程序
application/pdf pdf Adobe Acrobat
application/postscript ai eps ps PostScript
appication/powerpoint ppt Microsoft Powerpoint
appication/rtf rtf rtf 格式
appication/x-compress z unix 压缩文件
application/x-gzip gz gzip
application/x-gtar gtar tar 文档 (gnu 格式 )
application/x-shockwave-flash swf MacroMedia Flash
application/x-tar tar tar(4.3BSD)
application/zip zip winzip
audio/basic au snd sun/next 声音文件
audio/mpeg mpeg mp2 Mpeg 声音文件
audio/x-aiff mid midi rmf Midi 格式
audio/x-pn-realaudio ram ra Real Audio 声音
audio/x-pn-realaudio-plugin rpm Real Audio 插件
audio/x-wav wav Microsoft Windows 声音
image/cgm cgm计算机图形元文件
image/gif gifCOMPUSERVE GIF 图像
image/jpeg jpeg jpg jpe JPEG 图像
image/png PNG 图像
text/html HTML 
text/plain          TXT 
text/xml              XML
text/json            json字符串


附三:
域名映射
<Host name="www.abc.com" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="webapps" path=""  reloadable="true" ></Host>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章