相同点:
如果被包含进去的文件里面有css文件的话,包含的页面会受到被包含文件的css样式的影响!
不同点:
<%@ include
file="date.jsp" %>
<jsp:include
page="date.jsp" flush="true"/>
include
编译指令是在
JSP
程序的转换时期就将
file
属性所指定的程序内容嵌入,然后再编译执行;
还有就是如果包含.jsp的文件的话,经常路径会出现问题。
而
include
指令在转换时期是不会被编译的,只有在客户端请求时期如果被执行到才会被动态的编译载入
只生成一个
class
文件
多个
Include
不能带参数
<jsp:include>
可以
同一个
request
对象
不同的
request
对象,可以取得包含它的页面的参数,并添加了自己的参数
常用
不常用
......
JSP文件下载-----------------------------------------------------------------
<%@ page contentType="text/html; charset=GBK"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page import="java.io.File"%>
<%@page import="java.io.InputStream"%>
<%@page import="java.io.FileInputStream"%>
<%
String path = request.getParameter("path") ;
if(path==null || "".equals(path)){
out.write("<mce:script type="text/javascript"><!--
") ;
out.write("alert('要下载的文件不存在');") ;
out.write("history.go(-1);") ;
out.write("
// --></mce:script>") ;
}
String realPath = "c:/myfile/正文.doc" ;
File file = new File(realPath) ;
if(!file.exists()){
out.write("<mce:script type="text/javascript"><!--
") ;
out.write("alert('要下载的文件不存在');") ;
out.write("history.go(-1);") ;
out.write("
// --></mce:script>") ;
......
错误:
String realPath = " http:// " + request.getServerName() + " : " + request.getServerPort() + request.getContextPath();
String realPath = " http:// " + request.getServerName() + " : " + request.getServerPort() + request.getServletPath();
正确:
String realPath = " http:// " + request.getServerName() + " : " + request.getServerPort() + request.getContextPath() + request.getServletPath().substring( 0 ,request.getServletPath().lastIndexOf( " / " ) + 1 );
如果想连带获取页面的名称时则去掉最后的substring即可. ......
第一种采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setString方法传值即可:
String sql= "select * from users where username=? and password=?;
PreparedStatement preState = conn.prepareStatement(sql);
preState.setString(1, userName);
preState.setString(2, password);
ResultSet rs = preState.executeQuery();
...
第二种是采用正则表达式将包含有 单引号('),分号(;) 和 注释符号(--)的语句给替换掉来防止SQL注入
例1
public static String TransactSQLInjection(String str)
{
return str.replaceAll(".*([';]+|(--)+).*", " ");
}
userName=TransactSQLInjection(userName);
password=TransactSQLInjection(password);
String sql="select * from users where username='"+userName+"' and password='"+password+"' "
Statement sta = conn.createStatement();
ResultSet rs = sta.executeQuery(sql);
...
或者例2
要引入的包:
import java.util.regex.*;
正则表达式:
private String CHECKSQL = “^(.+)\\sand\\s(.+)|(.+)\\sor(.+)\\s$”;
判断是否匹配:
Pattern.matches(CHECKSQL ......
第一种采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setString方法传值即可:
String sql= "select * from users where username=? and password=?;
PreparedStatement preState = conn.prepareStatement(sql);
preState.setString(1, userName);
preState.setString(2, password);
ResultSet rs = preState.executeQuery();
...
第二种是采用正则表达式将包含有 单引号('),分号(;) 和 注释符号(--)的语句给替换掉来防止SQL注入
例1
public static String TransactSQLInjection(String str)
{
return str.replaceAll(".*([';]+|(--)+).*", " ");
}
userName=TransactSQLInjection(userName);
password=TransactSQLInjection(password);
String sql="select * from users where username='"+userName+"' and password='"+password+"' "
Statement sta = conn.createStatement();
ResultSet rs = sta.executeQuery(sql);
...
或者例2
要引入的包:
import java.util.regex.*;
正则表达式:
private String CHECKSQL = “^(.+)\\sand\\s(.+)|(.+)\\sor(.+)\\s$”;
判断是否匹配:
Pattern.matches(CHECKSQL ......
在jsp中引用response.setContentType("application/msword");,打开的页面就是word样式。
1、实现word横打:
<style>
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:841.9pt 595.3pt;//纸张的大小
mso-page-orientation:landscape;
margin:89.85pt 72.0pt 89.85pt 72.0pt;
mso-header-margin:42.55pt;//页眉
mso-footer-margin:49.6pt;//页脚
mso-paper-source:0;
layout-grid:15.6pt;}
div.Section1
{page:Section1;}
</style>
使用<div class="Section1"></div>即可实现
2、自定义纸张大小纵打
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size: 21.5cm 14.00cm;
margin-left:0.5cm;//左页边距
margin-right:0.5cm;//右页边距
margin-top:0.5cm;//上页边距
margin-bottom:0.5cm//下页边距;
mso-header-margin:0.5cm;
mso-footer-margin:0.5cm;
layout-grid:0.5pt;}
d ......
这两天在为项目嵌入这个插件,搞得焦头烂额,成功插入了的,可是不知道什么问题,就是上传不了图片,竟然出现了这样的警告:WARN net.fckeditor.handlers.RequestCycleHandler - No property found for UserPathBuilder implementation! The 'DefaultUserFilesPath' will be used in the ConnectorServlet!
在网上找了半天没找着解决方法,上csdn求助也没人回答,后来也不知道怎么搞的,突然就好了……囧……
没弄清原因,不过我肯定我的配置一直是没有问题的,要是有问题,那只能说编辑环境可能有问题(就是myeclipse了……)。在这里,我简单地介绍一下该插件的配置与使用,留下脚印!
首先看看插件的截图吧,好知道一下这东西是咋样的:
就是这么个编辑器,目前已经出到了3.X版,更名为CKeditor,不过似乎这个新版对于上传功能还不行……之前试过,后来放弃了,才改用fckeditor最新的2.6.5,这个的配置要比之前的2.3之类的配置简单上许多,主要是上传的配置被整合了,不需要我们自己设置上传路径。
(ps:我使用的系统环境是struts1.x+hibernate3.x,据说使用struts2的系统配置web.xml时会冲突,这个自己上网找 ......