Web---JSP注册技术的的演绎(3代)-JSP/EJB/Servlet/POJO/JavaBean
我们可以这么理解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的更多相关文章
- (转) 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 ...
- 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 ...
- 《图解HTTP》 第11章 web的攻击技术
11.1 针对Web的攻击技术 简单的HTTP协议本身并不存在安全性问题,所以协议本身几乎不会成为攻击的对象. 11.1.1 HTTP不具备必要的安全功能 11.1.2 在客户端即可篡改请求 在HTT ...
- 利用JSP编程技术实现一个简单的购物车程序
实验二 JSP编程 一.实验目的1. 掌握JSP指令的使用方法:2. 掌握JSP动作的使用方法:3. 掌握JSP内置对象的使用方法:4. 掌握JavaBean的编程技术及使用方法:5. 掌握JSP ...
- 大规模web服务开发技术
大规模web服务开发技术 总评 这本书是日本一个叫hatena的大型网站的CTO写的,通过hatena网站从小到大的演进来反应一个web系统从小到大过程中的各种系统和技术架构变迁,比较接 ...
- 《大规模web服务开发技术》笔记
前段时间趁空把<大规模web服务开发技术>这本书看完了,今天用一下午时间重新翻了一遍,把其中的要点记了下来,权当复习和备忘.由于自己对数据压缩.全文检索等还算比较熟,所以笔记内容主要涉及前 ...
- Java web应用开发技术
Java web应用程序供用户通过浏览器发送请求,程序通过执行产生web页面,并将页面传递给客户机器上的浏览器,将得到的web页面呈现给用户. 一个完整的Java web应用程序通常由许多组件构成的, ...
- 《图解HTTP》阅读笔记--第十一章针对web的攻击技术
第十一章.针对WEB的攻击技术 ----<图解HTTP>阅读笔记攻击目标---Web简单的HTTP协议本身并不存在安全性 问题,协议本身并不会成为被攻击的对象,应用HTTP的服务器和客户端 ...
- web的攻击技术
简单的http协议本身并不存在安全性问题,因此技术本身几乎不会成为攻击的对象,应用http协议的服务器和客户端,以及运行在服务器端web应用等资源才是攻击目标,那么怎么攻击,来源于哪里呢 web应用攻 ...
随机推荐
- python正则实例
# -*- coding: cp936 -*-import reidcardregex=r"^[1-9]\d{14}(\d{2}[0-9x])?$"print re.search( ...
- add a path cgi-bin to asp.net mvc
1.简单,但是会丢失请求数据 protected void Application_BeginRequest() { string url = HttpContext.Current.Request. ...
- Js template engine
P http://www.jquery4u.com/javascript/10-javascript-jquery-templates-engines/ http://www.creativebloq ...
- 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) # ...
- ubuntu下安装ssh
vm安装ubunt后,无法连接ssh,一般情况是防火墙的问题,或者SSH没有安装. 防火墙 1.查看防火墙 sudo ufw status 2,关闭防火墙 sudo ufw disable ssh 1 ...
- python与编码
Python中的文字对象 Python 3.x中处理文字的对象有str, bytes, bytearray. bytes和bytearray可以使用除了用作格式化的方法(format, format_ ...
- java 动态代理理解
动态代理,顾名思义就是动态创建一个代理对象,无需手动为被代理类创建一个代理类,java的动态代理通过Proxy类和Invocation接口实现,代码如下: //被代理接口 public interfa ...
- 试求由a,b,c三个字母组成的n位符号串中不出现aa图像的符号串的数目
1.错误解法 共3^n,含aa的共3^(n-2),那么相减8*3^(n-2). 分析:aa的左右两边不能是a,所以结果肯定大了. 2.正确解法 假设符合条件的符合串 ...
- Linux系统调用列表
转自Linux系统调用列表 一.进程控制: fork 创建一个新进程 clone 按指定条件创建子进程 execve 运行可执行文件 exit 中止进程 _exit 立即中止当前进程 getdtabl ...
- asp.net 中 .ASPX 与.CS文件的关系
.aspx文件继承自.cs文件 虽然一个 Web 窗体页由两个单独的文件组成,但这两个文件在应用程序运行时形成了一个整体.项目中所有 Web 窗体的代码隐藏类文件都被编译成由项目生成的动态链接库 (. ...