JSP

J2EE的十三种技术(规范)

 

 

JSP学习:

语法基础:

           输出注释       隐藏注释  

<!--  -->             <%--         --%>

脚本元素      声明             表达式          脚本程序

<%!  %>           <%=  %>          scriptlet

指令元素      page               include          taglib

<%@include file=” ”% %>

动作元素      include           forward          param            plugin

<jsp:include page=" "  flush=”true”//>

usebean         setProperty           getProperty

 

 

前者是指令元素,后者是动作元素。

JSP指令:

  表达式  <%@include file=""%>

  该指令只是静态包含文件,不能为一个动态的地址,而且不带任何参数,服务器将对包含近来的文件进行编译。

 

JSP动作元素:

  表达式  <JSP:include page="" flush=”true”/ >

可以包含静态或动态文件,包含静态文件时服务器不对包含的文件编译,而在包含动态文件时服务器会编译包含动态文件,会自动判断包含文件是动态还是静态。

include指令不同,该动作元素在JSP页面被用户请求时,才将指定文件插入服务器的响应输出中。

include指令和jsp:include动作的区别:
 
调用的时间:
   jsp:include
动作在请求期间被包含。
   include
指令在转换期间被包含。
 
包含的内容:
   jsp:include
动作是包含jsp页面或servlet输出HTML 本。
   include
指令是文件的实际内容。

 

%@ include file=” ”%,jspinclude指令元素读入指定页面的内容。并把这些内容和原来的页面融合到一起。(这个过程是在翻译阶段:也就是jsp被转化成servlet的阶段进行的。

页面中不能指定多个contentType. ,   静态,动态包含

 

执行时间上:

%@ include file=”relativeURI”% 是在翻译阶段执行

jsp:include page=”relativeURI” flush=”true” / 在请求处理阶段执行.

引入内容的不同:

%@ include file=”relativeURI”%>引入静态文本(html,jsp),JSP页面被转化成servlet之前和它融和到一起.

jsp:include page=”relativeURI” flush=”true” />引入执行页面或servlet所生成的应答文本.

另外在两种用法中filepage属性都被解释为一个相对的URI.如果它以斜杠开头,那么它就是一个环境相关的路径.将根据赋给应用程序的URI的前缀进行解释,如果它不是以斜杠开头,那么就是页面相关的路径,就根据引入这个文件的页面所在的路径进行解释。

 

 

 

数据库编程:

JDBC

连接数据库         Connection     DriverManager

访问数据库         Statement         PreparendStatement   CallableStatement                                                           ResultSet

元数据操作         DatebaseMeta

数据分页             ResultSetMetaDate

 

 

<jsp:include  />动作 include指令 的比较[W1] 

格式

include指令

<jsp:include  />

作用时间

页面持续时间

请求时间

包含内容

文件的实际内容

页面的输出

影响主页面

可以

不可以

内容变化时是否需要手动修改包含页面

需要

不需要

编译速度

较慢(资源必须被解析)

较快

执行速度

较快

较慢

灵活性

较差(页面名称固定)

更好(页面可以动态指定)

.net服务器端包含:(Server Side Include  SSI)

#include

<!-- #include virtual = "/myapp/  " -->   虚拟目录

<!-- #include file="  "  -->           物理目录

<script>

<script language="c#" runat="server"  src="   ">[W2] 

</script>

 

 

<jsp:forward  page="forward.jsp" />

 

<jsp:plugin  type="applet"  code="clock.class"

javaversion="1.2"  width="160"  height="150">

 

<jsp:useBean  id="cart"  scope="session"  class="session.cart" />

<jsp:setProperty  name="cart"  property="balance"  value="0.0" />

<jsp:getProperty  name="calendar"  property="  "  /> [W3] 

 

 

Runtime.getRuntime().freeMemory()                当前系统空闲内存

Runtime.getRuntime().totalMemory()                所有内存

out.println(new java.util.Date());                        输出日期对象

out.println(new Date().toLocaleString());

out.println(our.getBufferSize());                        缓冲区大小

out.println(our.getRemaining());                        缓冲区剩余大小

        

request.setHeader("refresh","2");             刷新页面

 

Cookie应用:

测定多少人访问过

测定访问者有多少是新用户(即第一次来),多少是老用户

测定一个用户多久访问一次网站

 

传递cookie对象         response.addCookie(c)

读取cookie对象         Cookie[] c = request.getCookies();

取出符合需要的cookie对象,需要循环比较数组内每个对象的关键字

设置cookie对象的有效时间     c.setMaxAge(3600)

 


 include指令应该会快点吧

不要在这个标签放置其他编程逻辑,要使用另外一组<script>

通常将包含文件分为多个小文件

如果使用<jsp:getProperty来检索的值是空值,则NullPointerException

 

Cookiesession区别

比较项目

Cookie

session

存在期限

浏览器关闭前及设定时间内

浏览器关闭之前及默认时间内

存在方式

客户机

服务器

数量限制

20(同一服务器)

cookie

session

处理速度

 

 

对象作用范围

request

客户端的一次请求(可以包含多个页面)

session

首次访问时,产生新的会话,以后可以记住此会话状态

生命周期:会话超时,或者服务器端强制使会话失效

application

全局作用范围

生命周期:应用程序启动到停止

Page

一个JSP页面

 

 

 

jsp.net输出区别 获取数据

jsp

.net

<%=  %>

<% out.print( );  %>

System.out.print( );   控制台

<%=  %>

<% Response.Write( );  %>

Console.WriteLine( );   控制台

javascript  Document.write

 

 

String s = request. getParameter("Name");

String value=Request.Cookies["key"]; 

 

String s=Request.QueryString["Name"];

 

<%!  %> jsp定义的全局变量

编译成servlet后成为servlet的私有成员变量

 

网页重定向区别

jscript

window.location.href = "  " //window可以省略 [W1] 

window.location.reload

jsp

<jsp:forward  page="  " /> 或者

<jsp:forward  page="  ">  </jsp:forward>

Response.sendRedirect("http://    ")

response.setHeader("Refresh","5;URL=login.htm")

.net

Asp.net网页重定向

Response.Redirect("http://    ")

Response.AddHeader("Location", "http://www.yahoo.com.cn");

Server.Transfer("URL") //性能比Redirect高,具有允许目标页从源页中读取控件值和公共属性值,由于调用这方法后,浏览器不会反应更改后的浏览器信息,因此它也适合以隐藏URL的形式向用户呈现页面,如果用户按后退或剧新有可能导致意外情况
Server.Excute("URL")

php

header("Location:   index.php");

html

<META  HTTP-EQUIV="Refresh" CONTENT=0;  URL=index.php">

当然也可以respone.write(<script>alert('添加成功');location.href('指向页面的地址')</script>);等方式

 

 

编码转换

jscript  ajax

xmlhttp.setReauestHeader('Content-thpe','application/  ')

jsp

<%@page  contentType="text/html; chaset=GB2312" %>

<%@ page pageEncoding="utf-8"%>

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

 

public void doGet(HttpServletRequest req,HttpServletResponse res)

       {

              //业务逻辑

              try

              {

                     //中文乱码

                     res.setContentType("text/html;charset=gbk");

.net

<%@  Page  Language="c#"  ResponseEncoding="gb2312"%> 

Encoding encoding;

<% Response.Charset = "GBK" ; %>

<% Response.ContentType= "text/HTML" ; %>

php

header("Content-type: text/xml;  charset=utf-8");

$author = iconv('utf-8','gb2312',$author);

mysql_query("set names 'gb2312'");

html

<meta http-equiv=&#8220;Content-Type;content=text/html; charset=gb2312; />

xml

< xml version="1.0" encoding="ISO-8859-1" >

 

采用UTF-8编码,除了要将文件另存为UTF-8格式之外,还需要同时指定codepagecharset

 

编码加密

jscript  ajax

escape 编码 加密

unescape 解除编码

document.write(unescape(escape(  '<html><><>fdsfsdfsdfsdf<><><</html>'  )));

//这样就可以加密 输出的内容

 

encodeURI() 函数

该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( )

该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#

 

微软对脚本文档加密的工具  Script Encoder 是个命令行工具

 

利用js文件连接,<script  src="fdfdf.js"> </script>

jsp

 

.net

防止脚本入侵:

Response.Write(Server.HtmlEncode("<script> alert(/"脚本入侵/")</script>"));      //进行编码转换

Response.Write("<script> alert(/"脚本入侵/")</script>");                     //没有进行编码转换

php

加密函数:crypt()              md5()     shed()

 

字符串加密

 

mysql

urlencode()     URL编码

urldecode()     解码

 

如果 URI 组件中含有分隔符,比如 ? #,则应当使用 encodeURIComponent() 方法分别对各组件进行编码。

 

 

 

 

Servlet

配置服务器:

JAVA_HOME

TOMCAT_HOME

 

Tomcat三个功能

web服务器

jsp容器

servler的容器

开发servlet有三种方法: 需引入servlet-api.jar

实现servlet接口         DEMO

继承GenericServet      只需重写service方法即可 DMEO     

继承HttpServlet          DEMO 

HttpServlet用户登录DMEO

 

tomcat的配置:

修改tomcat端口  conf目录下的server.xml  <Connector port = "8080"   //理论上1~65535可以放,但1~1024(有名端口)最好不要设置

设置虚拟目录  server.xml 文件,在<Host>元素内添加 <Context  path="/myWebsite"  docBase="c:/myWebsite"  debug="0" />

也可以用conf --- calfo ------local---------下新建一个...xml文件,就代表一个web应用

tomcat的管理员设置密码  tomcat-users.xml    <user。。。

设置数据源和连接池(公司常用) 1.tomcat admin里配  2.server.xml配置 DMEO

server.xml文件中加了中文注释的就要在首行加

<?xml version="1.0" encode="gb2312"?>  默认情况下它是没有的

 

编程连接数据源:

import javax.*;

import javax.naming.*;

private Connection ct = null;

//创建一个上下文环境

Context con = new javax.namxing.InitialContext();

//通过con得到数据源

DataSource ds = con.lookup("java:comp/env/shunping");

ct.ds.getConnection();

 

 

java.lang.Runtime.getRuntime().exec("shutdown -h now");          //关机命令

 

set path = %path%;c:java......

jar -cvf test.war *.*    //把网点目录下的所有文件打包到 test.war

 

 

表单提交数据get请求和post请求的区别

post安全点

get提交的数据不能大于2K,post提交的数据理论上不受限制,但实际编程中建议不要大于64K

get响应速度快点,get 要求服务器立即处理请求;post请求可能形成一个队列请求


var url =location.href;

好像得到当前的网页地址

 

同一用户的不同页面共享数据:

1.         cookie     DEMO

2.         sendRedirect跳转

3.         session   DEMO

默认存放时间为30min,是指用户的发呆时间,并不是相隔时间。也可以修改  1web.xml中修改,2在程序中修改,如下

q.setMaxTnactiveInterval(20);  //按秒计算的

q.setMaxTnactiveInterval(0);  //整个Session都为空

当某个浏览器访问网站时,服务器会给浏览器分配一个唯一的session id,并以此来区分       不同的客户端

因为session的各个属性要占用服务器的内存,因此迫不得已的情况下才使用

4.         隐藏表单提交(form<input type=hidden name=a value=b>

 

 

ServletContext :相当于.net Application

可以把它想像成一个共用的空间,可以被所有的客户访问

this.getServletContext() 得到一个实例

添加一个属性:setAttribute(   ,  )

得到值 : getAttribute( )返回object

删除属性 removeAttrubute()

SerbletContext中的属性的生命周期从创建开始,到服务器关闭结束

 

 

分页技术:

定义四个变量

int pageSize 每页显示多少条记录  是指定的

int pageCount 一共有多少页       计算出来的

int pageNow 希望显示第几页     是用户选择的

int rowCount 一共有多少条记录        从表中查询得到的

 

反编译工具

JAD  

FrontEnd

用反编译命令:javap -c -package -public -private hello_java hello.java

 

  得到的反编译结果(hello.java)如下:(有关javap命令的选择参数请见其使用说明,这里-c表示选择了反编)

 

 

java的关键字

abstract

do

implement

private

this

boolean

double

import

protected

throw

break

else

instanceof

public

throws

byte

extend

int

return

transient

case

false

interface

short

true

catch

final

long

static

try

char

fianlly

native

strictfp

void

class

float

new

super

volatile

continue

for

null

switch

while

default

if

package

 

synchronized

 

 

Java的文档注释

      @author<作者姓名>

      @version<版本信息>

      @param<参数名称><参数说明>

      @return<返回值说明>

 

 

Java jvm运行过程:

         装入

校验

         运行

         (垃圾回收等)

反编译:jad

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

折腾数据折腾代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值