javaweb开发 JSP技术

静态web项目与动态web项目的区别

1.传统意义上的静态web项目是指使用HTML+CSS+JS等前端技术做成的页面,静态web项目不会随着用户的操作时间、操作地点等改变;而动态web项目可以根据用户的请求动态的作出响应。
2.静态web项目与动态web项目最大的区别是动态web项目可以进行数据库的操作,而静态web项目无法进行数据库的操作。

动态web项目执行原理

web项目执行原理
如图1所表示的一样,当客户端通过浏览器向服务端请求web资源时,web服务器插件会先判断客户端请求的web资源的类型,若是静态web资源则将客户端请求交给web服务器,并从文件系统中取出资源响应给客户端;若客户端请求的是动态web资源,则在web容器中进行处理,主要是通过拼凑代码(拼凑html代码)的方式动态的生成数据并通过web服务器响应给客户端。

JSP九大内置对象及常用方法

out对象
1.out对象的作用
JspWriter类的实例,用于把结果输出至网页上。
2.out对象常用方法
out.print(dataType dt):输出Type类型的值

request对象(请求对象)
常用方法:
1.void setCharacterEncoding():设置请求的编码方式
2.String getParameter(String name):返回name指定参数的参数值
3.String[] getParameterValues(String name):返回包含参数name的所有值的数组
4.void getRequestDispatcher(String location).forward(requset,response):请求转发,页面跳转的一种方式

下面通过一个简单的注册功能串一下上面的方法
注册页,用于收集用户信息

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登陆</title>
</head>
<body>
    <form action="check.jsp" method="post">
        姓名:<input type="text" name="uname"/><br/>
        密码:<input type="password" name="upwd"/><br/>
        爱好:<br/>
        <input type="checkbox" name="uhobbies" value="足球"/>足球
        <input type="checkbox" name="uhobbies" value="篮球"/>篮球
        <input type="checkbox" name="uhobbies" value="乒乓球"/>乒乓球<br/>
        <input type="submit" value="提交"/>
    </form>
</body>

检查页,用于接收用户信息

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>检查</title>
</head>
<body>

    <%
        /*
        request对象常用方法
        1.void setCharacterEncoding():设置请求的编码方式
        2.String getParameter(String name):返回name指定参数的参数值
        3.String[] getParameterValues(String name):返回包含参数name的所有值的数组
        4.void getRequestDispatcher(String location).forward(requset,response):请求转发,页面跳转的一种方式
        */

        // 设置请求的编码方式
        request.setCharacterEncoding("utf-8");
        // 根据name取值
        String name = request.getParameter("uname");
        String pwd = request.getParameter("upwd");
        String[] hobbies = request.getParameterValues("uhobbies");
    %>
    <!--显示用户信息-->
    提交成功,信息如下:<br/>
    姓名:<%=name%><br/>
    密码:<%=pwd%><br/>
    爱好:<br/>
    <%
        if (hobbies != null){
            for (String hobby : hobbies){
                out.print(hobby+"&nbsp;");
            }
        }
    %>
</body>
</html>

开启tomcat服务器访问login.jsp,进行注册操作
在这里插入图片描述
页面跳转到check.jsp进行取值
在这里插入图片描述
response(响应对象)
常用方法
response常用方法
1.void addCookie(Cookie cookie):服务端向客户端增加一个Cookie对象
2.void sendRedirect(String location):重定向,页面跳转的一种方式
3.void setContentType(String type):设置响应编码

下面通过一个登陆操作演示一下上面的常用方法,用户通过login.jsp页面输入用户名、密码;页面跳转到check.jsp进行校验,若用户名等于张三且密码等于abc则跳转到欢迎页,否则登陆失败。

登陆页

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登陆页</title>
</head>
<body>
    <form action="check.jsp" method="post">
        姓名:<input type="text" name="uname"/><br/>
        密码:<input type="password" name="upwd"/><br/>
        <input type="submit" value="提交"/>
    </form>
</body>
</html>

检查页

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>检查页</title>
</head>
<body>

    <%
        /*
        response常用方法
        1.void addCookie(Cookie cookie):服务端向客户端增加一个Cookie对象
        2.void sendRedirect(String location):重定向,页面跳转的一种方式
        3.void setContentType(String type):设置响应编码
        */

        // 设置响应的编码方式
        request.setCharacterEncoding("utf-8");
        // 取出用户信息
        String name = request.getParameter("uname");
        String pwd = request.getParameter("upwd");

        // 进行校验
        if (name.equals("张三") && pwd.equals("abc")){
            // 登陆成功,跳到欢迎页
            // 重定向方式跳转
            // response.sendRedirect("success.jsp");
            //请求转发方式
            request.getRequestDispatcher("success.jsp").forward(request,response);
        }else {
            // 登陆失败,跳回登陆页重新登陆
            request.getRequestDispatcher("login.jsp").forward(request,response);
            out.print("用户名或密码有误!");
        }
    %>


</body>
</html>

欢迎页

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>欢迎页</title>
</head>
<body>
    登陆成功,欢迎您:<br/>
    <%
        String name = request.getParameter("uname");
        out.print(name); //登陆成功,欢迎您: null
    %>
</body>
</html>

将项目部署到tomcat服务器并访问login.jsp
在这里插入图片描述
页面跳转到check.jsp页面进行校验
在这里插入图片描述
关于重定向和请求转发
cookie对象
1.Cookie对象不是内置对象,必须使用new关键字创建,由服务端产生并且在响应的同时发送给客户端,相当于我们平时理解的缓存
2.常用方法
public Cookie(String name,String value)
String getName():获取name
String getValue():获取value
void setMaxAge(int expiry):设置最大有效时间
3.服务端准备Cookie:response.addCookie(String name,String value)
客户端获取Cookie:Cookie[] request.getCookies():一次性拿到所有的Cookie对象,然后再遍历取出

下面通过一个记住用户名的例子串一下上面的方法

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登陆页</title>
</head>
<body>
    <%!
        String uname;
    %>
    <%
        // 标记用来记录Cookie是否失效
        boolean flag = false;
        // 接收Cookie
        Cookie[] cookies = request.getCookies();
        // 进行判断并取出用户信息
        for (Cookie cookie : cookies){
            if (cookie.getName().equals("uname")){ // 若能执行到这一步说明拿到了用户名
                uname = cookie.getValue();
                //flag = true; // 能进行到这一步说明Cookie未失效
            }
        }
        if (!flag){
            out.print("Cookie已失效!");
        }else {
            out.print("Cookie:"+uname);
        }
    %>

    <form action="addCookie.jsp" method="post">
        姓名:<input type="text" name="uname" value="<%=(uname==null?"":uname)%>"/><br/>
        密码:<input type="password" name="upwd"/><br/>
        <input type="submit" value="提交"/>
    </form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>服务端</title>
</head>
<body>
    <!--
        Cookie对象
        1.Cookie对象不是内置对象,必须使用new关键字创建,由服务端产生并且在响应的同时发送给客户端,相当于我们平时理解的缓存
        2.常用方法
            public Cookie(String name,String value)
            String getName():获取name
            String getValue():获取value
            void setMaxAge(int expiry):设置最大有效时间
        3.服务端准备Cookie:response.addCookie(String name,String value)
          客户端获取Cookie:Cookie[] request.getCookies():一次性拿到所有的Cookie对象,然后再遍历取出
    -->

    <%
        // 设置请求编码方式
        request.setCharacterEncoding("utf-8");
        // 取出用户信息
        String name = request.getParameter("uname");
        String pwd = request.getParameter("upwd");
        // 创建Cookie对象
        Cookie cookie = new Cookie("uname",name);
        // 设置Cookie最大有效时间
        cookie.setMaxAge(60);
        // 增加Cookie对象
        response.addCookie(cookie);
        // 响应将Cookie发送给客户端
        response.sendRedirect("A.jsp");
    %>

</body>
</html>

session对象
session对象:
1.session中文翻译为会话,表示用户从登陆到退出登陆的这个过程,session由服务端产生,通过Cookie响应至客户端
2.当用户第一次访问服务端时,服务端会自动为这个用户产生一个sessionId,并且自动产生一个name为JSESSIONID的Cookie响应至客户端

    session常用方法
    1.String getID():获取sessionId
    2.boolean isNew():判断用户是否是第一次登陆
    3.void invalidate():使sessio失效(退出登陆、注销)
    4.void setAttribute():设置属性值
    5.Object getAttribute():获取属性值,需要进行强制类型转换
    6.void setMaxInactiveIntervval():设置最大有效非活动时间

下面通过一个实例演示session对象常用方法

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登陆</title>
</head>
<body>

    <form action="check.jsp" method="post">
        姓名:<input type="text" name="uname"/><br/>
        密码:<input type="password" name="upwd"/><br/>
        <input type="submit" value="提交"/>
    </form>

</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>检查</title>
</head>
<body>

    <%--

        session对象:
        1.session中文翻译为会话,表示用户从登陆到退出登陆的这个过程,session由服务端产生,通过Cookie响应至客户端
        2.当用户第一次访问服务端时,服务端会自动为这个用户产生一个sessionId,并且自动产生一个name为JSESSIONID的Cookie响应至客户端

        session常用方法
        1.String getID():获取sessionId
        2.boolean isNew():判断用户是否是第一次登陆
        3.void invalidate():使sessio失效(退出登陆、注销)
        4.void setAttribute():设置属性值
        5.Object getAttribute():获取属性值,需要进行强制类型转换
        6.void setMaxInactiveIntervval():设置最大有效非活动时间

    --%>

    <%
        // 设置编码
        request.setCharacterEncoding("utf-8");
        // 取出用户信息进行判断
        String name = request.getParameter("uname");
        String pwd = request.getParameter("upwd");
        if (name.equals("张三") && pwd.equals("abc")){
            // 登陆成功,session中才有必要保存用户信息
            session.setAttribute("uname",name);
            session.setAttribute("upwd",pwd);
            System.out.println("sessionId:"+session.getId());
            Cookie cookie = new Cookie("uname",name);
            response.addCookie(cookie);
            // 设置最大有效非活动时间
            // session.setMaxInactiveInterval(10);
            // 请求转发
            request.getRequestDispatcher("welcome.jsp").forward(request,response);
        }else {
            // 登陆失败,重新登陆
            response.sendRedirect("login.jsp");
        }
    %>

</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>欢迎页</title>
</head>
<body>
    登陆成功,欢迎您:<br/>
    <%
        String name = (String) session.getAttribute("uname");
        if (name != null) {
            out.print(name);

    %>
        <a href="invalidate.jsp">注销</a>
    <%
        }else {
            // 重新登陆(防止用户直接通过地址栏的方式访问welcom.jsp页面)
            response.sendRedirect("login.jsp");
        }
    %>
</body>
</html>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值