Java开发交流群 677807540   大家可以一起

讨论技术欢迎加入

1.在web. 设置异常出现的跳转信息
<error-page>
    //出现空指针异常
    <exception-type>java.lang.NullPointerException</exception-type>
    //跳转到那个页面
    <location>/error.jsp</locatiion>
</error-page>

2.jsp 注释的方式<%-- --%> java脚本
带有!的声明是全局变量,在service方法外面
不带有!的声明是局部变量,在service方法里面
带有=号表示输出方式,直接输出值生成的源码也在service里面
<%! %> <% %> <%= %>

3 使用include指定元素 file带便引入本页面的辅页
<%@ include file=\"data2.jsp\"%>

4.jsp内建对象 这些对象我们可以直接使用,不需要通过类来拿取
在源码中这些对象已经准备好了,我们使用时唯一注意的就是对象名是固定得
不能够随便更改
对象名 
pageContext request session application 
config out page  response exception(这个需要page 指令设置是否开启)

5.page指令元素
import:页面脚本导包,多个包用逗号隔开
pageEncoding:jsp转换为servicr的编码 默认是iso-8859*1不支持中文
contentType:软编码的一部分,一般在指令元素外再添加request.setCharacterEncoding(\"编码\")
这俩句就是Servlet中的软编码,在jsp中不管是get和post都支持中文
session:默认是true,表示支持session会话跟踪机制,如果设置为false则打开jsp页面时不能自动创建当前的session
buffer:页面的缓存,默认8kb这些内容会保存在用户本地,提高浏览器速度
info:嵌套在jsp中的一段信息,一般保持用户的签名等,通过getServletInfo()取出
isELIgnored:是否忽略EL表达式,默认不忽略
isThreadSafe:当前线程是否是安全,默认true 单实例多线程,不安全! 
更改为false,单线程模式,线程安全,底层实现了SingleThreadModel接口效率低下
errorPage:当前页面出现异常时自动跳转到哪个页面(错误友好化)
isErrorPage:当前页面是否可以使用exception内置对象来显示异常,true可以使用false无法使用
autoFlush:当前页面是否自动实时刷新,不读取缓存,设置刷新时间还可以自动根据时间刷新

6.所谓表达式,表示此技术偏重于数据的显示,一般是往外取值不会涉及到赋值,业务逻辑等操作

7.EL表达式拿取范围属性 ${范围.key},范围可以省略,省略后会自定从范围小的开始拿取, .后面肯定是key 不需要引号
四个范围 pageScope requestScope sessionScope applicationScope 

8.接受客户端传来的值 <%=request.getParameter()%> 
表单提交的或者是链接传来的值都是String类型的字符串 
EL表达式 ${param.key} 这里的param不可以省略

9${empty sessionScope.key} 拿不到值返回true 拿到返回false

10.EL表达式并不是任何值都能直接显示,必须根据提供的范围从范围中拿取,如果无法拿取,则什么都不输出,也不会报错.

11.拿取web. 中配置的全局参数
<%=application.getInitParameter()%> 这是java代拿取
EL表达式 ${initParam.key} 

12.JSTL 变迁 jsp standard tag lib
范围赋值
<c: set var= \"key\" value=\"值\" scope=\"范围\" page request session application></c:set>
取值
<c:out value=\"直接输出/<%=str%>/${pageScope.key}  default=\"如果取不到值者输出这里的内容\"></c:out>

13.删除值
<c: remove var=\"要删除的key\" scope=\"要删除的范围\" 如果不给出范围则会根据key全部删除 />

14.重定向
<c: redirect url=\"目标地址的绝对路径\"></c:redirect>

15.遍历
<c:forEach items(循环体)=\"${sessionScope.key}/<%=session.getAttribute(\"key\")%\"  
var=\"每次遍历出来对象的key\" step=\"每int个遍历出来一次/步长\" begin=\"开始的索引值\" 
end=\"结束的索引值\">
        这里的范围一定是page 可以省略不写
    <c:out value=\"${pageScope.对象的key.属性的key}\"></c:out>
</c:forEach> 

16.流程控制
<c:if test=\"条件\">
    <c:out value=\"输出\"></c:out>
</c:if>

<c:choose>
    <c:when test=\"条件\">
        <c:out value=\"z输出\"></c:out>
    </c:when>
    <c:otherwise>
        <c:out value=\"输出\"></c:out>
    </c:otherwise>
</c:choose>

17.引入外部页面 如果没有网这里会报错
<c:import url=\"网站地址\"></c:import>

18.jsp内建动作 每个jsp页面一定都要写contentType 和<%=request.setCharacterEncoding(\"编码\")%>

19.useBean 变迁不一定是新建一个新的对象,而式根据id提供的key和scope提供的范围从内存中拿取,如果可以拿取直接拿取已经存在的对象,如果无法拿取,则穿件一个新的对象.
受四个范围影响.超果范围则会创建一个新的对象
<jsp:useBean id=\"stu\" class=\"com.etoak.po.Student\" scope=\"request\"></jsp:useBean>
page request session application
以下有三种拿取属性的方式
<%=stu.getName() 这里的stu是对象的值%>
<c:out value=\"${requestScope.stu.name}\"></c:out> 范围也可以省略
<jsp:getProperty property=\"name\" name=\"stu\"/>
除了java脚本里面的stu其他的都是key
而且 id name 是同一个key key肯定和对象名字一样 对象的名字也叫key
useBean 创建一个stu的想key是stu getProperty得到name属性的key是name

20.
接受提交过来的值并赋值 name对应useBean的id的key property给哪个属性的key赋值
如果页面提交过来的key和实体类的对象完全一样可以用*表示
value=\"表示这个属性的值就是这个用户提交的无效\" 
当页面提交过来的key和实体类的属性不对应要设置param属性来对应页面提交过来的key
<jsp:setProperty property=\"name\" name=\"stu\" param=\"提交过来表单的key\" value=\"固定得值\" /> property拿取属性的key名 name里面的和id也要对应
<jsp:getProperty property=\"name\" name=\"stu\"/>

21请求转发
<jsp:forward page=\"suc.jsp\">
    <jsp:param value=\"thisisvalue\"  name=\"thisiskey\" />
</jsp:forward>
重定向
            
<c:redirect url=\"err.jsp\">
 通过连接传值只能传字符串:相当于response.sendRedirect(\"err.jsp?thisiskey=thisisvalue\")
    <c:param name=\"thisiskey\" value=\"thisisvalue\"></c:param>
</c:redirect>

22.分页的种类 1.假分页 拿出所有 用户需要那几条显示那几条 
              2.真分页 用户需要几条数据,就从数据库中拿取几条数据

23.分页公式
select 字段 from 表 limit ?,?;

24.分页四要素
A:总记录数    dao层里面可以拿取
B:每页记录数     自己定义每页显示的数据
c:总页数    (总记录数+每页记录数-1)/每页记录数
D:当前页     会随着用户动作发生改变,默认值1,在求当前页面时必须随着用户的动作立即拿取当前页面

25 分页公式pro
select 字段 from 表 limit(当前页-1)*每页记录数,每页记录数;

26.利用隐藏域 将每个button按钮激发时候的值赋给 隐藏域
    function chang(cr){
        cup 是隐藏域的name  将button按钮的值赋给 隐藏域的name
        document.form[0].cup.value =cr;
        文本对象拿取第一个form[0]的cup的key和value的key 并cr 赋给他
        dacument.form[0].submit();
    }
                
27.上传操作 必须使用post enctype:设置传输为字节流 multipart/form-data
                                 设置字符流application/x-www-form-urlencoded

28.上传文件流程
    全称都要try 使用SmartUpload 插件五步上传文件
    1:引入SmartUpload SmartUpload su = new SmartUpload();
    2:设置允许上传文件后缀名 多个用逗号分开
    su.serAllowedFilesList(\"jap,pen,gif\");
    3:设置允许上传文件的大小
    su.setTotalMaxFileSize(5<<20);
    4.初始化 使SmartUpload插件取代Servlet的request
    su.initialize(getServletConfig(),request,response);
    5上传文件
    su.upload();

    //拿取所有上传文件
    Files files = su.getFiles();
    //拿取唯一的一个上传文件
    File file = files.getFile(0);
    //拿取上传文件的全名
    String fileName = file.getFileName();
    //拿取上传文件的后缀名
    String fileExt = file.getFileExt();
    //设置一个路径,将文件按照原名保存在此路径下
    String path = \"/image/\"+ new UUIDFenerator().generate()+\".\"+fileExt;
    //将文件保存在此路径下
    file.saveAs(path);

    //接收提交过来的用户名 
    //拿取SmartUpload提供的request;
    从SmartUpload中得到request对象
    Request req = su.getRequest();
    String name = req.getParameter(\"name\");

    Uploader up = new Uploader(name,path);
    request,setAttribute(\"up\",up);
    通过请求转发发送到指定页面


    src=\"/工程名/image/4839483943849.jpg\"
        
        拿取/工程名
        request.getContextPath()
        拿取/image/483948394349.jpg
        up.getPicpath()
        ${requestScope.up.picpath}
        
        使用EL表达式来拿取九个内置对象
        Java:
            pageContext
            request
            session
            application
            response
            page
            out 
            config
            exception
        El:
            ${pageContext}
            ${pageContext.request}
            ${pageContext.session}
            ${pageContext.servletContext}
            ${pageContext.servletConfig}
            ${pageContext.out}
            ${pageContext.exception}
            ${pageContext.response}
            ${pageContext.page}
    <jsp:useBean id=\"up\" class=\"com.etoak.po.Uploader\" scope=\"request\"></jsp:useBean>
    <img alt=\"些什么都行,浏览器差异很大\" src=\"${pageContext.request.contextPath}${requestScope.up.picpath}\"/>
    <a href=\"/JspDay4_upload/servlet/Download?path=${up.picpath}\">下载文件</a>
        try{
            //引入SmartUpload
            SmartUpload su = new SmartUpload();
            //设置保存的目的地,如果填写null则由浏览器提示用户下载到哪里
            su.setContentDisposition(null);
            //初始化
            su.initialize(getServletConfig(),
                    request, response);
            //根据提供的地址进行下载
            su.downloadFile(request.getParameter(\"path\"));

收藏 打印