java--jsp(Java Server Page)_3

来源:互联网 发布:软件通用解决方案 编辑:程序博客网 时间:2024/04/30 14:02
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>JSP开发的几代技术</title>  </head>  <body>    <h2>JSP开发的几代技术</h2>    <a href="jsps/login1.jsp">第一代JSP开发技术1:纯JSP技术</a><br/><br/><br/>    <a href="jsps/login2.jsp">第一代JSP开发技术2(model1):JSP+EJB技术</a>    <h4>第二代JSP开发技术(model2):MVC框架=JSP+JaveBean+Servlet技术</h4>    <hr/>    <h2>以下演示jsp中bean标记的使用</h2>    1、声明JavaBean对像-必须使用完整类名<br/>    <jsp:useBean id="u" class="cn.hncu.ejb.User" scope="session"></jsp:useBean>    <!-- 以上声明相当于:        User u = new User();         session.setAttribute("u",u);        scope的可选值为:page|request|session|application    -->    <%        u.setName("jack");        out.println(u.getName());     %>    <br/>    2、访问JavaBean的属性<br/>    <jsp:getProperty property="name" name="u"/><br/>    <jsp:setProperty property="age" name="u" value="23"/>    <jsp:getProperty property="age" name="u"/>    <h4> 使用"jsp:setProperty"标记为birthday(复杂类型)设置属性:</h4>    <!--注意,如果仅仅只把User中的birthDay变量改为birth,下面的属性名不要用"birth",             因为底层是根据下面property中的取值生成对应的setter-getter方式名,再到JavaBean中调用对应方式。      < jsp:setProperty property="birth" name="u" value="2016-09-26"/>是错的     -->    <jsp:setProperty property="birthDay" name="u" value="2016-09-26"/>    <jsp:getProperty property="birthDay" name="u"/>    <%  out.println( u );  %> <br/>    3、通过param属性给JavaBean赋值<br/>     <jsp:useBean id="u2" class="cn.hncu.ejb.User" scope="session"></jsp:useBean>    <form action="jsps/a.jsp">        姓名1:<input type="text" name="nm"/><br/>        姓名2:<input type="text" name="name"/><br/>        年龄:<input type="text" name="age"/><!-- 提供字符串到int类型的转换 --><br/>        <input type="submit" value="注册"/>    </form>  </body></html>

这里写图片描述

使用JSP的原则
在项目的开发中(除非这个公司是个菜鸟公司),JSP只用做展示,所有的用户操作,都是从JSP页面将请求发给Servlet处理,Servet在处理完成后,再转发给其他JSP页面。这就是基本的MVC设置模式,也即Model1。
在JSP页面中,一般不会出现<% ..%>这样的java代码块。需要输出时使用jsp的自定义的标签来处理,这样JSP就更像是HTML页面了。(此技术后面会讲)。
第一代JSP开发技术1:纯JSP技术

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>  </head>  <body>  <!-- 处理表单的JSP可以用单独的JSP来实现 -->    <!--     <form action="login1.jsp">提交给自己处理     -->    <form action="login1Serv.jsp">        Name:<input type="text" name="name" /><br/>        <input type="submit" value="登录">    </form>  </body></html>

登陆失败
这里写图片描述

这里写图片描述

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>  </head>  <body>  <!-- 处理表单的JSP可以用单独的JSP来实现,可以写在login1.jsp页面中 -->    <%        request.setCharacterEncoding("utf-8");        String name = request.getParameter("name");        if(name!=null && name.startsWith("hncu")){//在这里访问后台(用普通类写或直接在这里写访问后台的代码)            session.setAttribute("user", name);            response.sendRedirect(request.getContextPath()+"/jsps/suc.jsp");        }else{            out.println("登录失败!");        }    %>  </body></html>

登陆成功
这里写图片描述
这里写图片描述

第一代JSP开发技术2(model1):JSP+EJB技术

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>  </head>  <body>  <!-- 处理表单的JSP可以用单独的JSP来实现 -->    <form action="login2Serv.jsp">        Name:<input type="text" name="name" /><br/>        <input type="submit" value="登录">    </form>  </body></html>

登陆失败
这里写图片描述

这里写图片描述

<%@page import="cn.hncu.ejb.User"%><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>  </head>  <body>  <!-- 处理表单的JSP可以用单独的JSP来实现 -->    <%        request.setCharacterEncoding("utf-8");        //EJB = 企业级JavaBean = 包含业务逻辑的JavaBean        //把用户提交的登录参数收集并封装成JavaBean         String name = request.getParameter("name");        User u = new User();        u.setName(name);        //调用EJB中的业务逻辑层代码        User user = u.login();        if(user!=null){//在这里访问后台(用普通类写或直接在这里写访问后台的代码)            session.setAttribute("user", user);            response.sendRedirect(request.getContextPath()+"/jsps/suc.jsp");        }else{            out.println("登录失败!");        }    %>  </body></html>

登陆成功

这里写图片描述

这里写图片描述

第二代JSP开发技术(model2):MVC框架=JSP+JaveBean+Servlet技术:http://blog.csdn.net/xanlv/article/details/52822352

jsp中bean标记的使用
JavaBean简介
JavaBean是一种可重用的软件组件。
一个JavaBean具有以下标准:
        必须是一个公共的类。
        一个公开的无参的构造。
        getXxx和setXxx方法。
在JSP中访问JavaBean的语法:
声明JavaBean对像-必须使用完整类名
        < jsp:useBean id=”u” class=”cn.hncu.ejb.User” scope=”session”>< /jsp:useBean>
注:一般情况下,我们保留< jsp:useBean/>的body部分为空,如果不为空,则只有初始化此Bean时执行,如:
        < jsp:useBean id=”u” class=”cn.hncu.ejb.User” scope=”session”>
                这是body部分,只会在初始化时执行一次
        < /jsp:useBean>
访问JavaBean的属性
        < jsp:setProperty property=”age” name=”u” value=”23”/>
        < jsp:getProperty property=”age” name=”u”/>
        也可以在页面上使用Java代码直接访问它的属性和其他方法。
JavaBean的范围
JavaBean的scope属性决定的Bean的范围,默认为page范围。
当声明了一个Bean并将它放到某个范畴之后,在同一个范围内再次使用< jsp:useBean../>将不再创建。而是直接给你返回已经创建过的Bean的实例。此过程可以通过查看容器翻译的源代码得知。
通过param属性给JavaBean赋值:
JavaBean可以接收用户通过参数提交的数值,并直接封装到JavaBean中。
以下JavaBean的属性全部为String类型。
以下接收用户的三个参数直接赋值:注意保持与参数指定的名相同
< jsp:setProperty property=”name” name=”u” param=”nm”/>
一次设置全部属性:
< jsp:setProperty name=”u2” property=”*”/>注意不能使用param
注意:一次设置全部的参数,其内部通过反射加以实现,所以,
在你向Bean传递参数时,必须与JavaBean的属性名高度一致。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>设置bean中的属性</title>  </head>  <body>    <h2>演示jsp中bean标记的使用</h2>    <h4> 利用请求表单上传的参数来设置bean中的属性 </h4>    <jsp:setProperty property="name" name="u" param="nm"/>    u:${u}<br/><br/>    <h4>自动装配bean: 把表单参数名与bean中属性名一一对应地进行读参且设置属性</h4>    <jsp:setProperty name="u2" property="*"/>    u2:${u2}  </body></html>

这里写图片描述

这里写图片描述

调用JavaBean的其他方法
在JavaBean中除了可以通过标签调用它的的属性之外,还可以直接在scriptlet直接调用它的其他方法。
这种方式比较适合较小的项目。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>  </head>  <body>    欢迎你,<%=session.getAttribute("user")%> <br/>    <h2>以下是用户相应的操作界面</h2>    <h2>以下是用户相应的操作界面</h2>  </body></html>
0 0
原创粉丝点击