Web---JSP注册技术的演绎(3代)-JSP/EJB/Servlet/POJO/JavaBean

简介: 我们可以这么理解JSP注册技术的发展过程: 第一代JSP技术:纯JSP开发。 第二代JSP技术:JSP+EJB开发。 (EJB简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行。

我们可以这么理解JSP注册技术的发展过程:
第一代JSP技术:纯JSP开发。
第二代JSP技术:JSP+EJB开发。
(EJB简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行。)
第三代JSP技术:JSP+Servlet+POJO开发。(**MVC框架)
(POJO其实就是简单的JAVA类,也是简单的JavaBean(特殊的值对象封装))

其实EJB—可理解成企业级的JavaBean(相对于简单的JavaBean增加了一些业务处理方法)

现在还有更新的技术,目前还没学到,学到后会第一时间写博客的。

演示纯JSP开发技术:

regPurJsp.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>

  <body>
  <h2>纯JSP开发的注册</h2>
    <form action="doReg.jsp" method="post">
        Name:<input type="text" name="name" /><br/>
        Password:<input type="password" name="pwd"/><br/>
        <input type="submit" value="注册"/>
    </form>
  </body>
</html>

doReg.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
    <%
        request.setCharacterEncoding("utf-8");
        String name = request.getParameter("name");
        if(name!=null && name.trim().length()>0 && name.startsWith("hncu") ){
            //访问后台
            session.setAttribute("user", name);
            out.println("success..."+name);
            //其实还可以跳转到其他登录成功的jsp页面的,这里就省略了;
            //request.getRequestDispatcher("success.jsp").forward(request, response);
        }else{
            out.println("failuer..."+name);
            //可以跳转到其他登录失败的jsp页面的,这里就省略了;
            //request.getRequestDispatcher("failure.jsp").forward(request, response);
        }
    %>
  </body>
</html>

演示结果就不演示了,相信大家一眼就能看出运行结果,不过是2个jsp页面跳转而已(后台数据库没写),中间有一些java代码罢了。

JSP+EJB开发

regEjbJsp.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
    <form action="doRegEjb.jsp" method="post">
        Name:<input type="text" name="name"/><br/>
        Age:<input type="text" name="age"/> <br/>
        <input type="submit" value="注册"/>
    </form>
  </body>
</html>

User.java:

package cn.hncu.jspEjb.ejb;

import java.util.ArrayList;
import java.util.List;

public class User {
    private String name;
    private Integer age;
    public User() {
        super();
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }

    //在POJO(JavaBean)的基础上增加一些业务处理方法,就变成企业级JavaBean---EJB
    public boolean reg(){
        //可以再去调用DAO层。我这里简化了
        //UserDAO dao = UserDaoFactory.getUserDAO();
        //dao.reg(this.name,this.age);
        if(name.startsWith("hncu") && age>20){
            return true;
        }else{
            return false;
        }
    }

    /**
     * @return 功能,返回所有的User
     */
    public List<User> getAll(){
        return null;
    }
}

doRegEjb.jsp:

<%@page import="cn.hncu.jspEjb.ejb.User"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>

  <body>
    <%
        request.setCharacterEncoding("utf-8");
        String name = request.getParameter("name");
        String strAge = request.getParameter("age");
        //下面这一句强转需要再防范一下!!
        int age = Integer.parseInt(strAge);
        User user = new User();
        user.setName(name);
        user.setAge(age);
        boolean boo = user.reg();

        if(boo){
            //访问后台。。。
            session.setAttribute("user",name);
            out.print("success..."+name);
            //也可以再写一个登录成功页面
            //request.getRequestDispatcher("success.jsp").forward(request, response);
        }else{
            out.print("failure..."+name);
            //也可以再写一个登录失败页面
            //request.getRequestDispatcher("failure.jsp").forward(request, response);
        }



    %>

  </body>
</html>

JSP(V)+Servlet(C)+POJO(M)开发的注册—MVC

这里把业务逻辑层从JavaBean分离开了!

user.java:

package cn.hncu.regServletPojo.domain;

public class User {
    private String name;
    private Integer age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }



}

RegServlet.java:

package cn.hncu.regServletPojo.servlets;

import java.util.List;

import cn.hncu.regServletPojo.domain.User;

public class RegServlet {

    public boolean reg(User user){
        //再分一个DAO
        //UserDAO dao = UserDaoFactory.getUserDAO();
        //dao.reg(user);
        //要去数据库校验数据!!!!
        if(user.getName().startsWith("hncu") && user.getAge()>20 ){
            return true;
        }else{
            return false;
        }
    }

    //查询所有的User
    public List<User> getAll(){
        return null;
    }
}

regServletJsp.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>

  <body>
    <h2>JSP(V)+Servlet(C)+POJO(M)开发的注册---MVC</h2>
    <form action="/myJspDemo2/RegServletPOJO" method="post">
        Name:<input type="text" name="name"/><br/>
        age:<input type="text" name="age"/><br/>
        <input type="submit" value="注册"/>
    </form>
  </body>
</html>

web.xml:

<servlet>
    <servlet-name>RegServletPOJO</servlet-name>
    <servlet-class>cn.hncu.reg.servlet.RegServletPOJO</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>RegServletPOJO</servlet-name>
    <url-pattern>/RegServletPOJO</url-pattern>
  </servlet-mapping>    

RegServletPOJO.java:

package cn.hncu.reg.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.hncu.regServletPojo.domain.User;
import cn.hncu.regServletPojo.servlets.RegServlet;

public class RegServletPOJO extends HttpServlet {

    //注入servlet
    RegServlet service = new RegServlet();

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();

        request.setCharacterEncoding("utf-8");
        String name = request.getParameter("name");
        String strAge = request.getParameter("age");

        //下面的解析需要防范
        int age = Integer.parseInt(strAge);

        User user = new User();
        user.setName(name);
        user.setAge(age);

        boolean boo = service.reg(user);

        if(boo){
            //访问后台。。
            request.getSession().setAttribute("user", name);
            out.print("success..."+name);
            //可以转发到另外的成功页面
            //request.getRequestDispatcher("sussess.jsp").forward(request, response);
        }else{
            out.print("failure..."+name);
            //可以转发到另外的失败页面
            //request.getRequestDispatcher("failure.jsp").forward(request, response);
        }

    }

}

JavaBean简介:

JavaBean是一种可重用的软件组件。
一个JavaBean具有以下标准:
1、必须是一个公共的类。
2、必须有一个公开的无参的构造。
3、必须有getXxx和setXxx方法。

目录
相关文章
|
5月前
|
人工智能 安全 物联网
区块链技术的未来展望:去中心化金融(DeFi)与Web 3.0的融合
区块链技术的未来展望:去中心化金融(DeFi)与Web 3.0的融合
|
5月前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
91 6
|
5月前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
121 3
|
5月前
|
SQL 负载均衡 安全
安全至上:Web应用防火墙技术深度剖析与实战
【10月更文挑战第29天】在数字化时代,Web应用防火墙(WAF)成为保护Web应用免受攻击的关键技术。本文深入解析WAF的工作原理和核心组件,如Envoy和Coraza,并提供实战指南,涵盖动态加载规则、集成威胁情报、高可用性配置等内容,帮助开发者和安全专家构建更安全的Web环境。
157 1
|
5月前
|
负载均衡 监控 算法
论负载均衡技术在Web系统中的应用
【11月更文挑战第4天】在当今高并发的互联网环境中,负载均衡技术已经成为提升Web系统性能不可或缺的一环。通过有效地将请求分发到多个服务器上,负载均衡不仅能够提高系统的响应速度和处理能力,还能增强系统的可扩展性和稳定性。本文将结合我参与的一个实际软件项目,从项目概述、负载均衡算法原理以及实际应用三个方面,深入探讨负载均衡技术在Web系统中的应用。
242 2
|
6月前
|
存储 安全 数据库
后端技术在现代Web开发中的实践与创新
【10月更文挑战第13天】 本文将深入探讨后端技术在现代Web开发中的重要性,通过实际案例分析展示如何利用先进的后端技术提升用户体验和系统性能。我们将从基础架构设计、数据库优化、安全性保障等方面展开讨论,为读者提供清晰的指导和实用的技巧。无论是新手开发者还是经验丰富的技术人员,都能从中获得启发和帮助。
129 2
|
6月前
|
人工智能 前端开发
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
164 0
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
|
5月前
|
缓存 安全 前端开发
构建高效Web应用的五大关键技术
【10月更文挑战第42天】在数字化浪潮中,Web应用已成为企业与用户互动的重要桥梁。本文将深入探讨提升Web应用性能和用户体验的五项核心技术,包括前端优化、后端架构设计、数据库管理、安全性增强以及API开发的最佳实践。通过这些技术的应用,开发者可以构建出更快、更稳定且更安全的Web应用,满足现代网络环境的需求。
|
6月前
|
机器学习/深度学习 移动开发 JavaScript
Web实时通信的学习之旅:SSE(Server-Sent Events)的技术详解及简单示例演示
Web实时通信的学习之旅:SSE(Server-Sent Events)的技术详解及简单示例演示
2498 0
|
5月前
|
监控 前端开发 JavaScript
前端技术探索:构建高效、可维护的Web应用
【10月更文挑战第23天】前端技术探索:构建高效、可维护的Web应用
107 0

热门文章

最新文章