JSP

JSP 工作原理

  • 与servlet相比是先将源代码部署后在编译成class文件,后者是先将源代码编译class文件,再部署到服务器。

JSP 组成

模板数据+元素即HTML+JAVA

JSP输出&注释&声明

//输出
out.println();
<%= %> 
//注释
//
</**/> //java注释
<%--jsp注释--%> 
<%! 声明%>
<body>
    <h1>九九乘法表</h1>
    <hr>
    <br>
    <%!String print99() {
        String s = new String();
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                s += i + "*" + j + "=" + (i * j) + "&nbsp;&nbsp;&nbsp;&nbsp;";
            }
            s += "<br>";
        }
        return s;
    }%>
    <%=print99()</body>

通过脚本方式实现

<body>
    <h1>九九乘法表</h1>
    <hr>
    <br>
    <%  
            for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                out.println(i + "*" + j + "=" + (i * j) + "&nbsp;&nbsp;&nbsp;&nbsp;");
            }
            out.println("<br>");
    %>
</body>

JSP指令&JSP动作

JSP指令

这里写图片描述
- page指令
这里写图片描述

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  • 遗留问题:设置如下中文出现乱码。
<%@ page language="java" import="java.util.*" contentType="text/html; charset = utf-8"%>

JSP动作

  • 遗留问题,学习指令与动作的区别。

jsp内置对象

  • 不需用通过new创建的对象,可直接调用。

response对象

<%@page import="java.io.PrintWriter"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
//直接用脚本写HTML 
out.println("<h1>response练习</h1><hr><br>");
//out.flush();
//创建输出流对象
PrintWriter outer =  response.getWriter();
//通过输出流对象进行输出
outer.println("使用out.flush()才能显示到后面来");
response.sendRedirect("reg.jsp");//请求重定向,要关闭前面的out.flush();
 %>
  • 下面两句有区别
response.sendRedirect("request.jsp");//要关闭前面的out.flush();
request.getRequestDispatcher("request.jsp").forward(request, response);

session 内置对象

练习项目中的sessionpage1 sessionpage2
- sessionpage1

  <body>
  <%
  //创建时间格式方便显示
  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
  Date d = new Date(session.getCreationTime());//通过jsp内置对象session获取创建时间

  //可以通过键值对进行存储信息
  session.setAttribute("username", "eric");
  session.setAttribute("sex", "man");
   %>
    session 的内置对象 <hr><br>
    session 创建时间:<%=dateFormat.format(d) %><br/><!-- //格式化时间输出,1 创建格式 2产生时间 3格式化时间 -->
    session 唯一ID号:<%=session.getId() %><br/>
    获取用户名:<%= session.getAttribute("username") %><br>
    <%
    session.setAttribute("page1Id", session.getId());
     %><br/>

    <a href = "sessionpage2.jsp" target ="_blank">这是一个超链接指向sessionpage2</a>

    <%
//session.setMaxInactiveInterval(10);//设置当前会话的有效期为10秒,时间一到重新创建会话,之前的存储信息丢失
     session.invalidate();//销毁会话
     %>

  </body>
  • sessionpage2
  <body>
    This is sessionpage2 page. <br>
    session id is :<%= session.getId() %>
    <%
     if (session.getAttribute("page1Id") == session.getId()){
     out.println("与之前的session的id相同");
     }
     %><br/>
     获取session中所有存储的信息的名称:<%
         String [] names = session.getValueNames();
         for(String str : names){
           out.println(str+"&nbsp&nbsp");
         }
      %>
  </body>

application对象

<body>
    <h1>application练习</h1>
    <hr>
    <br>
    <%
        application.setAttribute("name", "eirc");
        application.setAttribute("age", 25);
        application.setAttribute("isSingle", true);
    %>
    <%=application.getAttribute("name")%><br>
    <%=application.getAttribute("age")%><br>
    <%=application.getAttribute("isSingle")%><br> 都有哪些属性:<%
        Enumeration enu = application.getAttributeNames();//返回该对象,迭代器遍历输出
        while (enu.hasMoreElements()) {
            out.println(enu.nextElement() + "<br>");
        }
    %><br> 还可以获取引擎版本号:<%=application.getServerInfo()%>
</body>

pageContext对象

<body>
    <h1>pageContext 练习</h1>
    <%
        pageContext.getSession().getAttribute("username");/* //可以获取session中的所有属性。 */
    %>
    <%-- <% pageContext.forward("index.jsp");//跳转页面 %> --%>
    <%
        pageContext.include("index.jsp");//在此处包含该页面的内容
    %>
</body>

表单中get与post的区别

这里写图片描述
- get使用

<body>
    <h1>用户登录</h1>
    <hr>
    <form action ="dologin.jsp" name ="login" method ="get">
        <!--form是指明表单信息的  -->
        <table>
            <tr>
                <td>用户名:</td>
                <td><input type="text" name="username" /></td>
            </tr>
            <tr>
                <td>密码:</td>
                <td><input type="password" name="password" /></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="登录"></td>
            </tr>
        </table>
    </form>
</body>

这里写图片描述
- 采用post进行处理的效果
这里写图片描述

阶段项目

项目工程文件
- login.jsp

<body>
    <div id="container">
    <!--简单布局登录页面,具体还要学习前端进行美化  -->
        <div class="logo">
            <a href="#"><img src="assets/logo.png" alt="" /></a>
        </div>
        <div id="box">
            <form action="dologin.jsp" method="post">
                <p class="main">
                    <label>用户名:</label> <input name="username" value="" />
                     <label>密码:</label>
                    <input type="password" name="password" value="" />
                </p>
                <p class="space">
                    <input type="submit" value="登录" class="login"
                        style="cursor: pointer;" />
                </p>
            </form>
        </div>
    </div>
</body>
  • dologin.jsp
<body>
    <h1>This is my dologin page.</h1>
    <br>
    <%
        String name = request.getParameter("username");
        String password = request.getParameter("password");
        if (name.equals("admin") && password.equals("admin")) {
            session.setAttribute("loginUser", name);
            //跳转至登录成功页面,并向后传递对象,通过提问搜索将后面传递对象作用弄清楚。
            /* request.getRequestDispatcher("login_success.jsp").forward(request, response); */
            response.sendRedirect("login_success.jsp");//体会与上面的区别
        } else {
            //跳转至登录失败页面
            response.sendRedirect("login_failure.jsp");
        }
    %>
</body>

JavaBean

javabean设计原则
- 公有类
- 无参公有构造方法
- 属性私有
- 属性都有自己的getter与setter方法。

public class Students {
    public Students() {
    };

    private String name;
    private String age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

}

javabean动作元素

  • javabeanTest.jsp
<body>
    <h1>javabean test</h1>
    <hr>
    <br> //实例化javabeans的标志符,class是指javabeans通过哪个类实例化的,scope是指作用范围,
    <jsp:useBean id="myUsers" class="javaBeanTest.users" scope="page"></jsp:useBean>
    <%=myUsers.getName()%>
    <%=myUsers.getAge()%>
</body>
  • users.java
package javaBeanTest;
public class users {
    public users() {
    };

    private String name;
    private String age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

}

setProperty使用

  • 首先以后关机一定要将打开的软件保存并关闭之后进行,否则资料丢失真的很烦。
  • setProperty是为javabean对象存储数据的
    这里写图片描述

getProperty使用

这里写图片描述

javabeans的四个作用范围

这里写图片描述
项目地址,练习其中的login.jsp/dologin.jsp/tsetScope.jsp

Model1

jsp + javabeans 小项目

Cookies小练习

小项目

include

指令

  • 将包含进来的页面在当前显示。
    <%@ include file="" %>

动作

这里写图片描述

forward动作

这里写图片描述

<jsp:forward page="user.jsp"/>
//或
    <% 
 request.getRequestDispatcher("user.jsp").forward(request, response);
    %>
 //user中获取变量值
 username = request.getParameter("username");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值