JSP总结

来源:互联网 发布:淘宝网大码女装夏装 编辑:程序博客网 时间:2024/05/29 18:37

一、MyEclipse配置

配置前确保已安装TomCat 7Myeclipse 10JDK 1.7

应用服务器:

1、BEA WebLogic Server2、IBM WebSphere Application Server3、Oracle9i Application Server4、jBoss5、Tomcat

1、在 MyEclipse 10 中添加 TomCat:

window -> preferences -> MyEclipse -> Servers -> TomCat -> 选择自己安装的版本 -> TomCat的安装目录 -> 不要忘记Enable;

2、在 MyEclipse 10 中添加 JDK:

这里写图片描述

3、设置JSP的编码格式为“UTF-8“:

window -> preferences -> MyEclipse -> Files and Editors -> JSP -> Encoding中选择"UTF-8";

4、Tomcat的目录结构:

/bin    存放各种平台下用于启动和停止Tomcat的脚本文件/conf   存放Tomcat服务器的各种配置文件/lib    存放Tomcat服务器所需的各种JAR文件/logs   存放Tomcat的日志文件/temp   Tomcat运行时用于存放临时文件/webapps    当发布Web应用时,默认情况下会将Web应用的文件存放于此目录中/work   Tomcat把由JSP生成的Servlet放于此目录下

5、域名相关:

http://www.cnblogs.com/zhuanzhuruyi/p/6508565.html

6、web工程目录结构:

WebRoot:整个WEB中最安全的目录,无法直接访问,若访问,需要在web.xml中配置    ※META-INF:相当于一个信息包,目录中的文件和目录获得Java 2平台的认可与解释,              用来配置应用程序、扩展程序、类加载器和服务    WEB-INF:        classes:保存所有的*.class文件  所有的class都要放在 包中        ※lib:存放第三方的jar文件        ※web.xml:WEB的部署描述符manifest.mf文件,在用jar打包时自动生成。默认访问index.jsp

7、通过配置文件server.xml修改Tomcat端口号:

修改Tomcat —–> conf —–> server.xml 中的port参数。

这里写图片描述

8、web.xml配置文件

①、修改起始访问页:

<welcome-file-list>    //将参数修改为相应的页面,则跳转到对应页面    <welcome-file>index.html</welcome-file> </welcome-file-list>

二、WEB基本概念

1、动态网页与静态网页的区别:

http://www.cnblogs.com/bluesungz/p/5955170.html

2、B/S与C/S的区别:

软件安装:

B/S:安装到浏览器C/S:需要专门的客户端应用

升级维护:

B/S:客户端零维护C/S:客户端需要单独维护和升级

平台相关:

B/S:与操作系统平台的关系最小化C/S:对客户端操作系统一般有限制

性能安全:

B/S:在响应速度和安全性上需要花费更多设计成本C/S:能充分发挥客户端处理能力,客户端响应快

B/S

B/S技术中程序完全部署在服务器上原理:由用户通过浏览器发送请求到服务器,然后服务器通过服务器端程序,在服务器查找与用户请求相一致的内容,回馈给用户。

这里写图片描述

4、URL(统一资源占位符)

https://www.zhihu.com/question/21950864

基本URL包含:协议 :// 主机地址[:端口号] / 资源路径;

比如:http :// localhost:8080 / news/index.html

协议 常用端口号 http:超文本传输协议资源(Hypertext Transfer Protocol) 80/ 8080/3306/3128/8081/9080 https:用安全套接字层传送的超文本传输协议 1080 FTP:文件传输协议 21 telnet:Telnet协议 23 mailto:电子邮件地址 ldap:轻型目录访问协议搜索 file: 当地电脑或网上分享的文件 news:Usenet新闻组 gopher:Gopher协议

三、JSP

1、JSP原理:

     在我们访问jsp文件的时候,并没有直接去执行JSP文件,而是被服务器所拦截执行了jspServlet的类。此类会将jsp文件转译成对应的Servlet文件并执行。所以jsp本质还是Servlet。一般我们需要将两门技术结合使用,jsp处理页面显示,servelet处理业务逻辑,jsp要编译为servlet才能够执行。

a、jsp的界面一般包括:

静态内容、指令、小脚本、表达式、声明、注释

b、jsp执行过程:

①、翻译阶段②、编译阶段③、执行阶段

注意:
第一次请求之后,web容器可以重用已经编译好的字节码文件
若是对jsp文件进行了修改,则web容器会重新对jsp文件进行翻译和编译

2、JSP指令:

//指令语法<%@  %>/*---------------------------倔强的分隔符---------------------------------*///①、page指令:定义整个页面的属性<%@ page language = "声明JSP支持的语言"%><%@ page import = "转译时导的包" %><%@ page pageEncoding = "设置转译及客户端展现数据的编码格式"%><%@ page session = "true代表使用session对象(默认) || false不使用session对象"%><%@ page contentType = "text/html, utf-8"%> //指定JSP页面所采用的编码方式<%@ page errorPage = "jsp运行错误会自动跳转到指定的页面"%>/*---------------------------倔强的分隔符---------------------------------*///②、include指令//静态引入:转译成一个Servlet类(不能出现同名的变量),耦合性高<%@ include file = "文件名.jsp"%>//动态引入:转译成两个Servlet类(可以出现同名的变量),耦合性低<jsp:include page = "文件名.jsp"%><jsp:include>/*---------------------------倔强的分隔符---------------------------------*///③、forward指令//请求转发(自带return):<jsp:forward page="要转发的文件路径">    <jsp:param value="值" name="键"/></jsp:forward>

Jsp的6中基本动作:

基本动作 动作描述 jsp:include 在页面被请求的时候引入一个文件 jsp:useBean 寻找或者实例化一个JavaBean jsp:setProperty 设置JavaBean的属性 jsp:getProperty 输出某个JavaBean的属性 jsp:forward 把请求转到一个新的页面 jsp:plugin 根据浏览器类型为Java插件生成OBJECT或EMBED标记

关于errorPage和isErrorPage:

http://huihai.iteye.com/blog/897028

errorPage 的意思是设置当前页面要引入错误页面。//当前页面如果出现错误就会跳转到errorPage所指定的页面。 isErrorpage 的意思是当前页面为错误页面。//isErrorpage默认值为false,若要当前页面为错误页面就设置isErrorPage=true。

3、JSP小脚本:

//java代码段声明://会被转译到jspService方法中,局部代码<%    java代码%>/*---------------------------倔强的分隔符---------------------------------*///全局代码段声明://会被转译成全局代码<%!    声明方法%>

4、JSP表达式:

<%@ page language="java" import="java.util.*,java.text.*" pageEncoding="UTF-8"%><%!    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");    Date d = new Date();    String time = sdf.format(d);    out.println(time + "&nbsp;<br>"); //使用制表符,不会出效果,比较灵活%>//等价于out.write(),会将里面的值响应给客户端<%=time %>

5、JSP内置对象(隐含对象):

一共有 个内置对象,这些对象没有进行声明和创建,但却可以直接使用,内置对象由web容器创建的一组对象

四个作用域 两个输出 三个打酱油 pageContext response cookie request out config applicaton Exception session 作用域 会话:一段时间内,一个客户端与Web服务器的一连串相关的交互过程。会话详解:http://blog.jobbole.com/108192/ page 在当前jsp页面范围内有效,通过pageContext对象访问 request 请求作用域,在一个服务器请求范围内有效,作用在一次请求内,主要用于处理客户端处理 session 在一次会话范围内容有效,同一个浏览器,生命周期:会话超时,或者服务器端强制使会话失效。 application 全局作用范围,整个应用程序共享,就是在部署文件中的同一个webApp共享, 生命周期为:应用程序启动到停止

注:

以上作用范围使越来越小, request和page的生命周期都是短暂的,他们之间的区别就是:一个request可以包含多个page页(include,forward以及filter)。

①、page

a、page 来源于当前被访问JSP页面的实例化。它实际使用的是JSP转换成的Servlet。b、pageContext 提供访问JSP页面的命名空间。它也提供用来访问其他的JSP隐含对象。
//page1.jsp<%String name = "page";    pageContext.setAttribute("name", name);%><strong>    <%=pageContext.getAttribute("name") %></strong><br><%    pageContext.include("page2.jsp");%>
//page2.jsp<%=pageContext.getAttribute("name") %>

②、out(Java.io.Writer类): 发送输出流到客户端

//来源于Java.io.Writerout.println(); // 向页面输出,由Tomcat应用服务器创建,javax.JspWriter的隐式对象

③、request(javax.servlet.http.HttpServletRequest接口): 主要用于处理客户端请求, 关联到每一个HTTP请求

常用方法:String getParameter(String name); // 根据表单组件名称获取提交数据String getParameterValues(String name); // 获取表单组件对应多个值是的请求数据,如:checkboxvoid setCharacterEncoding(String name); // 指定每个请求的编码RequestDispatcher getRequestDispetcher(String path);RequestDispatcher 一般用 forward 方法进行消息转发

④、response(javax.servlet.http.HttpServletResponse接口): 响应客户端,并且向客户端输出信息

//页面重定向void  sendRedirect(String locatin); // 客户端将重新发送请求到指定的URL

⑤、session(javax.servlet.http.HttpSession接口)

常用方法 服务器与客户端之间的会话,用于存储客户端请求的信息,因此它是有状态交互式的 String getId(); 获取sessionid void invalidate(); 设置session对象失效 void setMaxInactiveInterval(int interval); 设置session的非活动时间 void getMaxinactiveInterval(int interval); 获取session的有效非活动时间(以秒为单位) void setAttribute(String key, Object value); 以key/value的形式保存对象值 void getAttribute(String key); 通过key获取对象值 void removeAttribute(String key); 从session中删除指定名称(key)所对应的对象

session的特点:

1.不是线程安全。2.session是轻量级,3.每个数据库操作都在事务中进行。

session缓存的作用:

1.减少数据库的访问频率。2.保证缓存中的对象和数据库中的相关记录保持同步。

功能:

//在关键页面增加登录验证,防止在浏览器中输入URL直接进入页面//如果session中不存在用户的登录信息,转入登录界面<%String login = session.getAttribute("login");if(login == null){    response.sendRedirect("index.jsp");}%>//可以将此段代码放入一个文件中封装,然后用include指令导入到需要登录验证的页面中<%@ include file = "loginControl.jsp"%>

session对象失效的方式:

手动设置失效: invalidate();
超时失效:
a、通过 setMaxInactivelnterval()方法,单位是秒

<%    session.setAttribute("login", "admin");    session.setMaxInactiveInterval(600);    response.sendRedirect("index.jsp");%>

b、通过设置项目的web.xml或Tomcat目录下的/conf/web.xml文件,单位是分钟

<session-config>    <session-timeout>10</session-timeout></session-config>

session的失效时间默认三十分钟

注意:

a、同一个session对象sessionid相同b、一个session对象,对应一个浏览器窗口,重新开启一个浏览器窗口(不同版本浏览器可能有所差别),相当于重新创建一个session对象c、id是session的唯一索引,通过超链接打开的新窗口,新窗口的session与其父窗口的session一样d、浏览器不同,session对象不同,在同一浏览器下有效e、通过超链接打开的新窗口,新窗口的session与其父窗口的session相同

⑥、cookies

常用方法 保存在客户端的一系列文本信息 void setMaxAge(int expiry); 设置cookie的有效期,以秒为单位 void setValue(String value); 在cookie创建后,对cookie进行赋值 String getName(); 获取cookie的名称 String getValue(); 获取cookie的值 int getMaxAge(); 获取cookie的有效时间,以秒为单位
//创建Cookie对象Cookie newCookie = new Cookie(String key, String value);//写入Cookieresponse.addCookie(newCookie);//读取CookieCookie[] cookies = request.getCookies();
//page1.jsp<%        String name = "page";        pageContext.setAttribute("name", name);     %>     <strong>        <%=pageContext.getAttribute("") %>     </strong><br>     <%        pageContext.include("page2.jsp");      %>
//page2.jsp<%=pageContext.getAttribute("name") %>

cookie的作用

对特定对象的追踪实现各种个性化服务简化登录安全性能:容易泄露信息

注意:

a、cookie中存储sessionIdb、在网页中禁用cookie会导致session、cookie失效(Cookie对象为null session对象为null;)c、Cookie 存放的数据,一定设置失效时间d、Cookie中保存明文密码时需要加密    md5:非对称加密,不可逆加密    des:对称加密    核心:秘钥

⑦、application(javax.servlet.ServletContext): Application在整个java EE 项目中有效服务关闭,application消失

常用方法 application 实现用户之间的数据共享 void setAttribute(String key, Object value); 以键值对的形式保存对象值 Object getAttribute(String key); 通过key获取对象值 String getRealPath(Strting path); 返回相对路径的真实路径

例子:可以通过application对象实现:访问网站人数的统计

//统计页<%    Integer count = (Integer) application.getAttribute("count");//拆箱操作    if (count != null) {        count = 1 + count;    } else {        count = 1;          }    application.setAttribute("count", count);%>//显示页<%    Integer i = (Integer) application.getAttribute("count");    out.println("您好,您是第 " + i + " 位访问本网站的用户");%>

⑧、config(ServletConfig)

它包含了当前JSP/Servlet所在的WEB应用的配置信息。

⑨、exception

exception用于捕获JSP抛出的异常。它只有在JSP页面属性isErrorPage=true时才可用。

6、JavaBean

①、JavaBean的优势

a、解决代码重复编写,减少代码冗余b、功能区分明确c、提高了代码的维护性

②、JavaBean以功能分类:

a、封装数据b、封装业务

注意:

a、在Jsp指令中导入包b、在Jsp小脚本中new对象,并调用之

四、总结

1、通过key- value来写入和读取: request、application、session、page、cookie

2、GET 还是 POST?

GET POST Get是从服务器上获取数据 Post是向服务器传送数据 Get方式通过URL提交数据,数据在URL中可以看到 POST方式,数据放置在HTML HEADER内提交。 服务器端用Request.QueryString获取变量的值 服务器端用Request.Form获取提交的数据 提交的数据最多只能有1024字节 无限制字节数 参数会显示在地址栏上 参数不会显示在地址栏上

出于安全考虑

如果这些数据是中文数据而且是非敏感数据,那么使用get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用post为好。

3、解决乱码问题

核心:将所有的代码编辑设置为一致的编码集

可以通过过滤器统一解决

以POST方式提交数据时:

request.setCharaEncoding("UTF-8");

以GET方式提交数据时:

第一种方式:

<%    String name = request.getParameter("name");    name = new String(name.getBytes("ISO-8858-1"), "UTF-8");%>

第二种方式:

在Tomcat —–> conf —–> server.xml 中添加URIEncoding="UTF-8"参数。

这里写图片描述

4、转发和重定向:

转发 重定向 转发是在服务器端发挥作用,将同一请求在服务器资源之间进行传递 重定向是在客户端发挥作用,通过发送一个新的请求实现页面转向 客户端浏览器的地址栏不会显示转向后的地址 在地址栏中可以显示转向后的地址

5、Cookie和Session对比

Cooekie Session 在客户端保存用户信息 在服务器端保存用户信息 cookie保存的是 String类型 session中保存的是Object类型 cookie可以长期保存在客户端 随会话的结束而将其存储的数据销毁 保存不重要的用户信息 保存重要的信息

6、Jsp与servlet的区别

Jsp Servlet Jsp由HTML和Jsp标签构成 Servlet由java程序代码构成 JSP擅长表现于页面显示,生成动态网页 Servlet更擅长于逻辑控制 Jsp的内置对象由HttpServlet等的对象得到 Servlet中没有内置对象 Jsp本质上就是Servlet Servlet由web服务器进行加载

7、Jsp和HTML的区别

HTML Jsp HTML(Hypertext Markup Language)文本标记语言,它是静态页面 JSP(Java Server Page)是Java服务端的页面 和JavaScript一样解释性语言:不需要编译器,只需在txt文档上书写HTML标记就能实现效果 Jsp首先转译成一个Servlet文件,然后编译成class文件,最终动态的显示到客户端 HTML能直接打开 Jsp只能发布到Tomact等服务器上才能打开 HTML的表头中没有导入包等的命令 Jsp的标签比较灵活 html没有<%%> Jsp中用小脚本<%%>可以写Java代码
原创粉丝点击