JSP的设计模式
1、JSP模型1(JSP+JavaBean)

<html>
<head>
<title>登陆页面</title>
</head>
<body>
<form method="post" action="loginchk.jsp">
用户名:<input type="text" name="name" width="20"><br/>
密 码:<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)

<html>
<head><title>用户登录</title></head>
<body>
<form method="post" action="controller">
<input type="hidden" name="action" value="login">
用户名:<input type="text" name="name"><br>
密 码:<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的设计模式的更多相关文章
- jsp DAO设计模式
DAO(Data Access Objects)设计模式是属于J2EE体系架构中的数据层的操作. 一.为什么要用DAO? 比较在JSP页面中使用JDBC来连接数据库,这样导致了JSP页面中包含了大量的 ...
- 十五 JSP开发模式&MVC设计模式
JSP开发模式: JavaBean + JSP : 缺点:页面代码过多,不利于维护,JSP页面代码变得臃肿 Servlet + JavaBean + JSP :MVC设计模式 M:model 模 ...
- JSP面试题都在这里
下面是我整理下来的JSP知识点: 图上的知识点都可以在我其他的文章内找到相应内容. JSP常见面试题 jsp静态包含和动态包含的区别 jsp静态包含和动态包含的区别 在讲解request对象的时候,我 ...
- JSP知识点总结
一.jsp静态包含和动态包含的区别 在学习request对象的时候,我们曾经使用过request.getRequestDispatcher(String url).include(request,re ...
- jsp和servlet的关系
JSP是Servlet技术的扩展,本质上就是Servlet的简易方式.JSP编译后是“类servlet”. Servlet和JSP最主要的不同点在于:Servlet的应用逻辑是在Java文件中,并且完 ...
- Java面试前需要了解的东西
一.前言 只有光头才能变强 回顾前面: 广州三本找Java实习经历 上一篇写了自己面试的经历和一些在面试的时候遇到的题目(笔试题和面试题). 我在面试前针对Java基础也花了不少的时间,期间也将自己写 ...
- MVC概述
学习MVC模式 一.MVC简介 MVC是Model-View-Controller的简称,即模型-视图-控制器.MVC是一种设计模式,它把应用程序分成三个核心模块:模型.视图.控制器,它们各自处理 ...
- day14-jdbc案例(简单的curd&分页)
回顾: mvc jsp的设计模式1: jsp+javabean jsp的设计模式2: jsp+javabean+servlet jsp:展示数据 javabean:封装数据 封装对数据的访问 serv ...
- day13-(事务&mvc&反射补充)
回顾: jsp: java服务器页面 jsp的脚本 jsp的注释 html注释 java注释 jsp注释 <%-- --%> jsp的指令 page:声明页面一些属性 重要的属性: imp ...
随机推荐
- Jquery $.getJSON()设置同步
如下: $.ajaxSettings.async = false; $.getJSON('/AjaxSwitchDynamicInfo/GetPortUsedCount.cspx', { switch ...
- 百度翻译API
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs& ...
- HDU 5597 GTW likes function 欧拉函数
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5597 题意: http://bestcoder.hdu.edu.cn/contests/contes ...
- 04.spring-data-redis与Jedis整合使用
1.spring-data-redis与Jedis简单整合 spring-data-redis与Jedis简单整合,Redis没有任何集群只是单节点工作,使用连接池 1.创建spring-contex ...
- C++ 11 新特性
C++11新特性: 1.auto 2.nullptr 3.for 4.lambda表达式 5.override ...
- 版本控制 - SVN/TortoiseSVN
研读了blog: 1. http://www.open-open.com/lib/view/open1346982569725.html 2. http://www.360doc.com/conte ...
- log4j 配置实例
1. http://hehongwei44.iteye.com/blog/1494999 2. http://maymay.iteye.com/blog/1275432 #log4j.rootLogg ...
- 单件模式(Singleton Pattern)(转)
概述 Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点.这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?客户程序在调用某一个类时,它是不会考 ...
- ASP.NET中读取excel内容并显示
项目中经常会用到把excel的文件内容导入到数据库中的,刚刚花了点时间,做了个例子,基本上能实现导入Excel后显示的功能吧,导入的excel文件得是xls,即是2003的. 代码思路如下:要 ...
- allow_url_include和allow_url_fopen
allow_url_fopen没什么好说的,主要是allow_url_include 从PHP5.2开始allow_url_include就默认为Off了,而allow_url_fopen一直是On的 ...