1、JSP模型1(JSP+JavaBean)

  JSP页面负责处理请求,并将响应发送给客户端。JSP页面文件包括:login.html、loginchk.jsp、welcome.jsp。JavaBean文件包括:UserBean.java、UserCheckBean.java。
1)登录页面login.html:
<html>
<head>
<title>登陆页面</title>
</head>
<body>
<form method="post" action="loginchk.jsp">
用户名:<input type="text" name="name" width="20"><br/>
密&nbsp;&nbsp;&nbsp;&nbsp;码:<input type="password" name="password" width="25"/><br/>
<input type="submit" value="登录"/>
<input type="reset" value="重置"/>
</form>
</body>
</html>

2)验证页面loginchk.jsp:

<%@ page contentType="text/html;charset=GB2312" language="java" %>
<%@ page import="com.yyq.bean.UserCheckBean"%>
<%request.setCharacterEncoding("GB2312");%>
<jsp:useBean id="user" scope="session" class="com.yyq.bean.UserBean"/>
<jsp:setProperty name="user" property="*"/>
<%
UserCheckBean uc = new UserCheckBean(user);
if (uc.validate()){
%>
<jsp:forward page = "welcome.jsp"/>
<%
}
else {
out.println("用户名或密码错误,请<a href=\"login.html\">重新登陆</a>");
}
%>
<html>
<head>
<title>验证</title>
</head>
<body>
</body>
</html>

3)欢迎页面welcome.jsp:

<%@ page contentType="text/html;charset=GB2312" language="java" %>
<jsp:useBean id="user" scope="session" class="com.yyq.bean.UserBean"/>
欢迎您,<jsp:getProperty name="user" property="name"/>

4)UserBean类:

package com.yyq.bean;
/**
* Created by gao on 16-4-18.
*/
public class UserBean {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

5)UserCheckBean类:

package com.yyq.bean;
/**
* Created by gao on 16-4-18.
*/
public class UserCheckBean {
private UserBean user;
public UserCheckBean() {
}
public UserCheckBean(UserBean user) {
this.user = user;
}
public UserBean getUser() {
return user;
}
public void setUser(UserBean user) {
this.user = user;
}
public boolean validate() {
String name = user.getName();
String password = user.getPassword();
//实际应用中,你应该查询数据库,验证用户名和密码。
if ("admin".equals(name) && "1234".equals(password)) {
return true;
} else {
return false;
}
}
}

6)启动Tomcat,输入http://localhost:8080/login.html

输入用户名admin和密码1234,点击登录进入欢迎页面:

如果用户名或者密码输入错误,则显示错误信息:

7)项目结构:

2、JSP模型2(MVC)

  在该模型中,JSP页面用于表示层,Servlet负责处理各类任务。Servlet作为一个控制器,负责处理请求并创建JSP页面所需的任何Bean。该控制器也负责确定将该请求传递到哪个JSP页面。JSP页面检索Servlet创建的对象,并其他动态内容插入在一个模板中。该模型促进了模型视图控制器(MVC)体系结构风格设计模式的使用。MVC其实是模型、视图、控制器的缩写。在使用JSP时,有相应的文件去实现相应的操作。通常JSP只负责视图,也就是只负责显示页面。业务逻辑等由Bean去实现。
  在MVC设计模型中,View用来呈现数据处理结果,可以是JSP、XML、HTML;Model用来存储数据的状态,可利用JavaBean来实现;Controller负责协调应用程序的运行流程,可用Servlet来实现。运用这种模式可以将数据呈现方式与数据处理方式分离,提高了代码的利用率。
1)登录页面login.html:
<html>
<head><title>用户登录</title></head>
<body>
<form method="post" action="controller">
<input type="hidden" name="action" value="login">
用户名:<input type="text" name="name"><br>
密&nbsp;&nbsp;码:<input type="password" name="password"><p>
<input type="submit" value="登录">
<input type="reset" value="重置">
</form>
</body>
</html>

2)信息错误显示页面loginerr.jsp:

<%@ page contentType="text/html;charset=GB2312" %>
用户名或密码错误,请<a href="login.html">重新登录</a>

3)欢迎页面welcome.jsp:

<%@ page contentType="text/html;charset=GB2312" %>
<jsp:useBean id="user" scope="session" class="com.yyq.bean.UserBean"/>
欢迎你,<jsp:getProperty name="user" property="name"/>!

4)用户UserBean类:

package com.yyq.bean;
/**
* Created by gao on 16-4-18.
*/
public class UserBean {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

5)用户检查UserCheckBean类:

package com.yyq.bean;
/**
* Created by gao on 16-4-18.
*/
public class UserCheckBean {
private UserBean user;
public UserCheckBean() {
}
public UserCheckBean(UserBean user) {
this.user = user;
}
public UserBean getUser() {
return user;
}
public void setUser(UserBean user) {
this.user = user;
}
public boolean validate() {
String name = user.getName();
String password = user.getPassword();
//实际应用中,你应该查询数据库,验证用户名和密码。
if ("admin".equals(name) && "1234".equals(password)) {
return true;
} else {
return false;
}
}
}

6)控制类 ControllerServlet类:

package com.yyq.controller;
import com.yyq.bean.UserBean;
import com.yyq.bean.UserCheckBean;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* Created by gao on 16-4-18.
*/
public class ControllerServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("GBK");
resp.setContentType("text/html;charset=GBK");
String action = req.getParameter("action");
if (!isValidated(req) && !("login".equals(action))) {
gotoPage("login.html", req, resp);
return;
}
if ("login".equals(action)) {
UserBean user = new UserBean();
user.setName(req.getParameter("name"));
user.setPassword(req.getParameter("password"));
UserCheckBean uc = new UserCheckBean(user);
if (uc.validate()) {
HttpSession session = req.getSession();
//将user对象保存到Session对象中,在welcome.jsp中
//通过<jsp:userBean>动作元素从Session中得到user对象
session.setAttribute("user", user);
//验证成功,将请求转向welcome.jsp
gotoPage("welcome.jsp", req, resp);
} else {
//验证失败,将请求转向loginerr.jsp
gotoPage("loginerr.jsp", req, resp);
}
}
//对于其它的action请求,可在后面的else if...else语句中继续处理。
/*else if
{
}
else
{
}*/
}
/**
* 判断用户是否已经登录了。
*/
private boolean isValidated(HttpServletRequest request) {
HttpSession session = request.getSession();
if (session.getAttribute("user") != null)
return true;
else
return false;
}
/**
* 将请求导向指定的页面。
*/
private void gotoPage(String targetURL, HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
RequestDispatcher rd;
rd = request.getRequestDispatcher(targetURL);
rd.forward(request, response);
}
}

7)项目结构:

JSP的设计模式的更多相关文章

  1. jsp DAO设计模式

    DAO(Data Access Objects)设计模式是属于J2EE体系架构中的数据层的操作. 一.为什么要用DAO? 比较在JSP页面中使用JDBC来连接数据库,这样导致了JSP页面中包含了大量的 ...

  2. 十五 JSP开发模式&MVC设计模式

    JSP开发模式: JavaBean + JSP  : 缺点:页面代码过多,不利于维护,JSP页面代码变得臃肿 Servlet + JavaBean + JSP :MVC设计模式 M:model   模 ...

  3. JSP面试题都在这里

    下面是我整理下来的JSP知识点: 图上的知识点都可以在我其他的文章内找到相应内容. JSP常见面试题 jsp静态包含和动态包含的区别 jsp静态包含和动态包含的区别 在讲解request对象的时候,我 ...

  4. JSP知识点总结

    一.jsp静态包含和动态包含的区别 在学习request对象的时候,我们曾经使用过request.getRequestDispatcher(String url).include(request,re ...

  5. jsp和servlet的关系

    JSP是Servlet技术的扩展,本质上就是Servlet的简易方式.JSP编译后是“类servlet”. Servlet和JSP最主要的不同点在于:Servlet的应用逻辑是在Java文件中,并且完 ...

  6. Java面试前需要了解的东西

    一.前言 只有光头才能变强 回顾前面: 广州三本找Java实习经历 上一篇写了自己面试的经历和一些在面试的时候遇到的题目(笔试题和面试题). 我在面试前针对Java基础也花了不少的时间,期间也将自己写 ...

  7. MVC概述

    学习MVC模式   一.MVC简介 MVC是Model-View-Controller的简称,即模型-视图-控制器.MVC是一种设计模式,它把应用程序分成三个核心模块:模型.视图.控制器,它们各自处理 ...

  8. day14-jdbc案例(简单的curd&分页)

    回顾: mvc jsp的设计模式1: jsp+javabean jsp的设计模式2: jsp+javabean+servlet jsp:展示数据 javabean:封装数据 封装对数据的访问 serv ...

  9. day13-(事务&mvc&反射补充)

    回顾: jsp: java服务器页面 jsp的脚本 jsp的注释 html注释 java注释 jsp注释 <%-- --%> jsp的指令 page:声明页面一些属性 重要的属性: imp ...

随机推荐

  1. Jquery $.getJSON()设置同步

    如下: $.ajaxSettings.async = false; $.getJSON('/AjaxSwitchDynamicInfo/GetPortUsedCount.cspx', { switch ...

  2. 百度翻译API

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs& ...

  3. HDU 5597 GTW likes function 欧拉函数

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5597 题意: http://bestcoder.hdu.edu.cn/contests/contes ...

  4. 04.spring-data-redis与Jedis整合使用

    1.spring-data-redis与Jedis简单整合 spring-data-redis与Jedis简单整合,Redis没有任何集群只是单节点工作,使用连接池 1.创建spring-contex ...

  5. C++ 11 新特性

    C++11新特性:          1.auto          2.nullptr          3.for          4.lambda表达式          5.override ...

  6. 版本控制 - SVN/TortoiseSVN

    研读了blog: 1. http://www.open-open.com/lib/view/open1346982569725.html  2. http://www.360doc.com/conte ...

  7. log4j 配置实例

    1. http://hehongwei44.iteye.com/blog/1494999 2. http://maymay.iteye.com/blog/1275432 #log4j.rootLogg ...

  8. 单件模式(Singleton Pattern)(转)

    概述 Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点.这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?客户程序在调用某一个类时,它是不会考 ...

  9. ASP.NET中读取excel内容并显示

    项目中经常会用到把excel的文件内容导入到数据库中的,刚刚花了点时间,做了个例子,基本上能实现导入Excel后显示的功能吧,导入的excel文件得是xls,即是2003的.     代码思路如下:要 ...

  10. allow_url_include和allow_url_fopen

    allow_url_fopen没什么好说的,主要是allow_url_include 从PHP5.2开始allow_url_include就默认为Off了,而allow_url_fopen一直是On的 ...