<%@ 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>

java pagehelper startpage失效_jsp

使用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>

登陆失败

java pagehelper startpage失效_html_02

java pagehelper startpage失效_java_03

<%@ 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>

登陆成功

java pagehelper startpage失效_HTML_04


java pagehelper startpage失效_html_05

第一代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>

登陆失败

java pagehelper startpage失效_HTML_06

java pagehelper startpage失效_html_07

<%@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>

登陆成功

java pagehelper startpage失效_HTML_08

java pagehelper startpage失效_jsp_09

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>

java pagehelper startpage失效_html_10

java pagehelper startpage失效_html_11

调用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>