我们可以这么理解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方法。

Web---JSP注册技术的的演绎(3代)-JSP/EJB/Servlet/POJO/JavaBean的更多相关文章

  1. (转) Web 建站技术中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什么?

    Web 建站技术中,HTML.HTML5.XHTML.CSS.SQL.JavaScript.PHP.ASP.NET.Web Services 是什么? 建站有很多技术,如 HTML.HTML5.XHT ...

  2. Web 建站技术中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什么(转)

    Web 建站技术中,HTML.HTML5.XHTML.CSS.SQL.JavaScript.PHP.ASP.NET.Web Services 是什么?修改 建站有很多技术,如 HTML.HTML5.X ...

  3. 《图解HTTP》 第11章 web的攻击技术

    11.1 针对Web的攻击技术 简单的HTTP协议本身并不存在安全性问题,所以协议本身几乎不会成为攻击的对象. 11.1.1 HTTP不具备必要的安全功能 11.1.2 在客户端即可篡改请求 在HTT ...

  4. 利用JSP编程技术实现一个简单的购物车程序

    实验二   JSP编程 一.实验目的1. 掌握JSP指令的使用方法:2. 掌握JSP动作的使用方法:3. 掌握JSP内置对象的使用方法:4. 掌握JavaBean的编程技术及使用方法:5. 掌握JSP ...

  5. 大规模web服务开发技术

    大规模web服务开发技术 总评        这本书是日本一个叫hatena的大型网站的CTO写的,通过hatena网站从小到大的演进来反应一个web系统从小到大过程中的各种系统和技术架构变迁,比较接 ...

  6. 《大规模web服务开发技术》笔记

    前段时间趁空把<大规模web服务开发技术>这本书看完了,今天用一下午时间重新翻了一遍,把其中的要点记了下来,权当复习和备忘.由于自己对数据压缩.全文检索等还算比较熟,所以笔记内容主要涉及前 ...

  7. Java web应用开发技术

    Java web应用程序供用户通过浏览器发送请求,程序通过执行产生web页面,并将页面传递给客户机器上的浏览器,将得到的web页面呈现给用户. 一个完整的Java web应用程序通常由许多组件构成的, ...

  8. 《图解HTTP》阅读笔记--第十一章针对web的攻击技术

    第十一章.针对WEB的攻击技术 ----<图解HTTP>阅读笔记攻击目标---Web简单的HTTP协议本身并不存在安全性 问题,协议本身并不会成为被攻击的对象,应用HTTP的服务器和客户端 ...

  9. web的攻击技术

    简单的http协议本身并不存在安全性问题,因此技术本身几乎不会成为攻击的对象,应用http协议的服务器和客户端,以及运行在服务器端web应用等资源才是攻击目标,那么怎么攻击,来源于哪里呢 web应用攻 ...

随机推荐

  1. 11个有用的Linux命令

    Linux命令行吸引了大多数Linux爱好者.一个正常的Linux用户一般掌握大约50-60个命令来处理每日的任务.今天为你解释下面几个命令:sudo.python.mtr.Ctrl+x+e.nl.s ...

  2. Word分栏

    情景描述 Word分栏在小论文的撰写过程中是很常用的技术.但是,我们经常会遇到很难过的情况: 一段文字本来是连续分布的,可是当选择了分两栏         之后,开始部分在左边一栏,中间在右边一栏. ...

  3. CSS 居中方法集锦(*******************************)

      记录收集纯CSS层面实现的水平.垂直居中方法可用于块级.行内快.内联元素以及文字图片等. 水平或垂直居中 1.1 text-align1.2 margin1.3 line-height1.4 pa ...

  4. python mongodb MapReduce

    # -*- coding: utf-8 -*-import osimport csvimport pymongofrom pymongo import MongoClientfrom bson.cod ...

  5. vs git .ignore

    ## Ignore Visual Studio temporary files, build results, and## files generated by popular Visual Stud ...

  6. css中文本框与按钮对不齐解决方案

    我们先对对input标记设定样式,代码如下: html 代码 <form> <input type=”text” name=”text1” id=”text1” /> < ...

  7. How To Call Stored Procedure In Hibernate

    How To Call Stored Procedure In Hibernate In this tutorial, you will learn how to call a store proce ...

  8. BT5之配置笔记

    BT5本来就是用Ubuntu 10.04做得蓝本,所以,我在配置BT5的时候,基本上都是按照Ubuntu 10.04的配置方法,在配置BT5 1    系统基本设置 1.1  安装Ubuntu10.0 ...

  9. zoj 3757&&3758

    3757一个模拟题,简单,但容易错: 3758 大素数判定就行: #include<cstdio> #include<cstring> #include<algorith ...

  10. RubyCritic:一款不错的检测代码质量工具

    关注代码质量是高效开发必须要做的一件事,那么在 Ruby 开发的过程中,是否有什么好的代码质量检测工具呢?下面由 Ruby 工程师路英瑞介绍一下 RubyCritic--一款还不错的代码质量检测工具. ...