javaweb开发 JSP技术

来源:遇妳 发布时间:2020-05-12 11:58:39 阅读量:1681

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

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

2.静态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>


标签: PHP
分享:
评论:
你还没有登录,请先