我们可以这么理解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. python正则实例

    # -*- coding: cp936 -*-import reidcardregex=r"^[1-9]\d{14}(\d{2}[0-9x])?$"print re.search( ...

  2. add a path cgi-bin to asp.net mvc

    1.简单,但是会丢失请求数据 protected void Application_BeginRequest() { string url = HttpContext.Current.Request. ...

  3. Js template engine

    P http://www.jquery4u.com/javascript/10-javascript-jquery-templates-engines/ http://www.creativebloq ...

  4. Python 知识点

    1. generator #g is a generator and g is iterable g = (x*x for x in range(5)) for n in g: print(n) # ...

  5. ubuntu下安装ssh

    vm安装ubunt后,无法连接ssh,一般情况是防火墙的问题,或者SSH没有安装. 防火墙 1.查看防火墙 sudo ufw status 2,关闭防火墙 sudo ufw disable ssh 1 ...

  6. python与编码

    Python中的文字对象 Python 3.x中处理文字的对象有str, bytes, bytearray. bytes和bytearray可以使用除了用作格式化的方法(format, format_ ...

  7. java 动态代理理解

    动态代理,顾名思义就是动态创建一个代理对象,无需手动为被代理类创建一个代理类,java的动态代理通过Proxy类和Invocation接口实现,代码如下: //被代理接口 public interfa ...

  8. 试求由a,b,c三个字母组成的n位符号串中不出现aa图像的符号串的数目

    1.错误解法       共3^n,含aa的共3^(n-2),那么相减8*3^(n-2).       分析:aa的左右两边不能是a,所以结果肯定大了. 2.正确解法       假设符合条件的符合串 ...

  9. Linux系统调用列表

    转自Linux系统调用列表 一.进程控制: fork 创建一个新进程 clone 按指定条件创建子进程 execve 运行可执行文件 exit 中止进程 _exit 立即中止当前进程 getdtabl ...

  10. asp.net 中 .ASPX 与.CS文件的关系

    .aspx文件继承自.cs文件 虽然一个 Web 窗体页由两个单独的文件组成,但这两个文件在应用程序运行时形成了一个整体.项目中所有 Web 窗体的代码隐藏类文件都被编译成由项目生成的动态链接库 (. ...