javaweb-JSP

1.jsp介绍:


    java server pages(java服务器页面)
    本质上jsp就是一个servlet,在html代码中嵌套java代码,
    运行在服务器端,处理请求,生成动态的内容.
    对应的java和class文件在tomcat目录下的work目录
    后缀名 .jsp

    jsp = html + java片段 + JSP标签(语法) + javascript(css)


2.JSP 执行流程:


        1.浏览器发送请求,访问jsp页面
        2.服务器接受请求,jspSerlvet会帮我们查找对应的jsp文件
        3.服务器将jsp页面翻译成java文件.
        4.jvm会将java编译成.class文件
        5.服务器运行class文件,生成动态的内容.
        6.将内容发送给服务器,
        7.服务器组成响应信息,发送给浏览器
        8.浏览器接受数据,解析展示


3.jsp的脚本:    


        <%...%> java程序片段
            生成成jsp的service方法中
        <%=...%> 输出表达式
            生成成jsp的service方法中,相当于在java中调用out.print(XXX)
        <%!...%> 声明成员---不常用
            成员位置.
   

4.jsp的指令


    作用:声明jsp页面的一些属性和动作
    格式:
        <%@指令名称 属性="值" 属性="值"%>
    jsp指令的分类:
        page:主要声明jsp页面的一些属性
        include:静态包含.
        taglib:导入标签库
    注意:
        一个页面中可以出现多个指令
        指令可以放在任意位置,一般都放在jsp页面最上面.

4.1page指令:


        重要属性:3个
            contentType:设置响应流的编码,及通知浏览器用什么编码打开.设置文件的mimetype
            pageEncoding:设置页面的编码
            import:导入所需要的包
            contentType和pageEncoding联系:
                若两者都出现的时候,各自使用各自的编码
                若只出现一者,两个都使用出现的这个编码
                若两者都不出现,使用服务器默认的编码 tomcat7使用的iso-8859-1
        了解属性:
            language:当前jsp页面里面可以嵌套的语言
            buffer:设置jsp页面的流的缓冲区的大小
            autoFlush:是否自动刷新
            extends:声明当前jsp的页面继承于那个类.必须继承的是httpservlet 及其子类
            session:设置jsp页面是否可以使用session内置对象
            isELIgnored:是否忽略el表达式
            errorPage:当前jsp页面出现异常的时候要跳转到的jsp页面
            isErrorPage:当前jsp页面是否是一个错误页面
             若值为true,可以使用jsp页面的一个内置对象 exception

 

 

4.2 include指令:


        静态包含,就是将其他页面或者servlet的内容包含进来,一起进行编译运行.生成一个java文件.
        格式:
            <%@include file="相对路径或者是内部路径" %>
        例如:
            <%@include file="/jsp/include/i1.jsp" %>
            
        路径:
            相对路径:
                ./ 或者什么都不写 当前路径
                上一级路径  ../
            绝对路径:
                带协议和主机的绝对路径
                不带协议和主机的绝对路径
                    /项目名/资源
                    
            内部路径:
                不带协议和主机的绝对路径去掉项目名
                    请求转发 静态包含 动态包含

 

4.3taglib指令

        taglib指令 :导入标签库    
        格式:
             <%@taglib prefix="前缀名" uri="名称空间" %>
        若导入之后
            <前缀名:标签 .. >
        例如:
            <c:if test="">输出内容</c:if>

5.jsp的内置对象:★★★(9大内置对象)


    在jsp页面上可以直接使用的对象
        内置对象            类型
        out                JspWriter
        request            HttpServletRequest
        response        HttpServletResponse
        session            HttpSession
        
        exception        Throwable
        
        page            Servlet(this)
        config            ServletConfig
        application        ServletContext
        
        pageContext        PageContext

 

  6.  jsp的域对象:(由大到小)

 

  •         application        整个项目
  •         session            一次会话
  •         request            一次请求
  •         pageContext        一个页面

pagecontext作用:理解


        1.域对象
            xxxAttribute()
        2.操作其他域对象
            方法:
                xxxAttribute(...,int scope);
                    scope取值:
                        APPLICATION_SCOPE 
                        SESSION_SCOPE 
                        REQUEST_SCOPE 
                        PAGE_SCOPE 

        3.获取其他的内置对象
            getXxx()
            注意:
                getRequest():获取request内置对象
        4.便捷查找,
            findAttribute(String key):
                依次从pagecontext,request,session,application四个域中,查找相应的属性,若查找到了返回值,且结束该次查找
                若查找不到,返回一个null

 

 

7.jsp的动作标签

    <jsp:forward>:请求转发  相当于java中  request.getRequestDispatcher(..).forward(..);
        <jsp:forward page="内部路径"></jsp:forward>
    <jsp:include>:动态包含
        就是将被包含页面或者servlet运行结果包含到当前页面中.

 

8.JSP特点:

jsp这门技术的最大的特点在于,写jsp就像在写HTML,但:

它相对于html而言,html只能为用户提供静态数据,而jsp技术允许在页面中嵌套java代码,为用户提供动态数据。
相比Servlet而言,Servlet很难对数据进行排版,而jsp除了可以用java代码产生动态数据的同时,也很容易对数据进行排版。
 

9.Jsp页面中的Java代码服务器是如何执行的?


假设我们在一个jsp的文件中写如下代码:

<body>
    <% 
        int i = 90;
        int j = i + 100;
     %>
     <h1>测试</h1>
     <%
        out.println("i="+i+"<br>");
        out.println("j="+j);
      %>
 </body>
可以看到,我们使用了两个<% %>符号嵌入了两段java代码,并且第二段java代码使用了第一段java代码中定义的变量,这样会报错吗?

【答案】:不会的,我们可以查看服务器翻译的对应于这个jsp文件的Servlet文件,找到那个最重要的_jspService方法,就可以看到,这几句代码都在该方法中,而定义的 i 和 j 变量不过是该方法的两个局部变量,当然可以被之后的语句使用了。

【结论】:如果有多个<% %>这样包含的java片段,其实是相当于一个大的java片段,在这中间定义的变量会成为_jspService函数的局部变量。
 

10.Web服务器在调用Jsp时,会给Jsp提供一些什么Java对象?

9个内置对象,后面会介绍到。我们现在已经使用了out这个对象,它其实就是相当于Servlet中的PrintWriter对象。

out.print(一般是自己写的内容)

out.write(一般是页面输出)

11.jsp注释:


    html注释 <!--  -->
        注释的内容只在页面上看不到  java代码和html源代码都有
    java注释 
        只在java代码中存在
    jsp注释 <%--  --%>
        只在jsp页面中存在,翻译成java文件之后就没有了

ctrl +shift+/自动注释

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java EE 项目的目录结构可以根据具体的需求进行灵活设计,但一般情况下,推荐使用以下的标准目录结构: ``` project ├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ └── example │ │ │ ├── controller │ │ │ ├── dao │ │ │ ├── entity │ │ │ ├── service │ │ │ └── util │ │ ├── resources │ │ │ ├── mapper │ │ │ └── db.properties │ │ └── webapp │ │ ├── WEB-INF │ │ │ ├── classes │ │ │ ├── lib │ │ │ └── web.xml │ │ ├── css │ │ ├── js │ │ ├── images │ │ └── index.jsp │ └── test │ ├── java │ └── resources ├── target ├── pom.xml └── README.md ``` 其中,各个目录的作用如下: - `src/main/java`:存放项目的 Java 源代码,按照包名分层,一般包括 `controller`、`dao`、`entity`、`service` 和 `util` 等包; - `src/main/resources`:存放项目的配置文件和资源文件,一般包括数据库连接配置文件 `db.properties`、MyBatis 的 mapper 文件等; - `src/main/webapp`:存放 Web 应用Web 资源,包括 JSP 页面、CSS 样式表、JavaScript 脚本等; - `src/test/java`:存放项目的测试代码; - `src/test/resources`:存放测试代码所需要的资源文件; - `target`:存放编译后的 .class 文件、打包后的 .war 文件等; - `pom.xml`:Maven 项目管理工具的配置文件; - `README.md`:项目说明文件。 以上是一种常见的 Java EE 项目目录结构,但并不是唯一的标准。在实际开发中,可以根据项目的具体需求进行合理的调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值