我们可以这么理解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. 关于APP,原生和H5开发技术的争论

    App的开发技术,目前流行的两种方式,原生和Html5.原生分了安卓平台和ios平台(还有小众的黑莓.死去的塞班就不说了),H5就是Html5. 目前争论不休的问题,在早先前争论CS,BS架构的软件系 ...

  2. CentOS安装mplayer

    据说mplayer相当于windows下的暴风影音,那么今天就来安装上mplayer. 安装的大体步骤: 安装mplayer需要安装,解码器,mplayer,皮肤. 这三个包你都可以在mplayer官 ...

  3. windows 系统下,小数据量Oracle用户物理备份

    环境:windows Server 2003 oracle 10g,系统间备份 目标系统创建共享文件,原系统挂载共享目录 写批处理脚本,用任务计划定时调用 Rem * 由于系统实时性要求不是很高,数据 ...

  4. django 的请求处理部分----WSGIHandler 源码分析 django1.5.5

    从这里拉开django框架的帷幕..撕开,哈哈 主要涉及的类:django.core.handlers.base.BaseHandler,django.core.handlers.wsgi.WSGIH ...

  5. awk的使用备忘

    [转]http://www.cnblogs.com/mydomain/archive/2012/09/24/2699467.html awk引用外部变量   一.用awk 有以下几种方法去调用变量: ...

  6. Unity3d Shader开发(一)Properties

    着色器可以定义一个参数列表,可以由开发者在材质检视面板编辑参数.着色器文件中的Properties块定义了这些参数: 语法: Properties { Property [Property ...] ...

  7. Python之创建tuple

    tuple是另一种有序的列表,中文翻译为" 元组 ".tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了. 同样是表示班里同学的名称,用tuple表示如 ...

  8. SpringMVC最基础配置

    SpringMVC和Struts2一样,是前后台的一个粘合剂,struts2用得比较熟悉了,现在来配置一下SpringMVC,看看其最基础配置和基本使用.SpriingMVC不是太难,学习成本不高,现 ...

  9. DOS系统里,分屏显示目录的命令是什么??

    dir /sdir /pdir /w 我记得这三个都是我当年常用的命令,有分瓶的,有滚动时候每页停顿的,还有去掉详细信息的吧,, 可以放在一起使用.如dir /p/w /p是滚动时候中间停顿的,/w是 ...

  10. 用JAVA实现数字水印(可见)

    数字水印有可见不可见之分,可见的比如课件上印有学校校徽,微博发图片会水印上上传者的信息及微博logo等. 用java实现可见的数字水印,草人主要是用到了java.awt包中的AlphaComposit ...