基于Servlet的MVC模式(使用JSP,Servlet,JavaBean实现MVC)_使用基于servlet的mvc模式_haha_7的博客-程序员宅基地

技术标签: web  servlet  JavaWeb学习  mvc  eclipse  

MVC模式

1.MVC概念
MVC是模型(model),视图(view),控制器(controller)的缩写,分别代表Web应用程序中的3种指责。
模型:用于存储数据以及处理用户请求的业务逻辑
视图:向控制器提交数据,显示模型中的数据
控制器:根据视图提出的请求,判断将请求和数据交给那个模型处理,处理后的有关结果交给那个视图更新显示

2.基于Servlet的MVC模式
模型:一个或多个JavaBean对象,用于存储数据(实体模型,由JavaBean类创建)和处理业务逻辑(业务模型,由一半的Java类创建)
视图:一个或多个JSP页面,由控制器提交数据和为模型提供数据显示,JSP页面主要使用HTML标记和JavaBean标记来显示数据
控制器:一个或多个Servlet对象,根据视图提交的请求进行控制,即将请求转发给处理业务逻辑的JavaBean,并将处理结果存放到实体模型JavaBean中,输出给视图显示

使用JSP,Servlet,JavaBean实现MVC

实现MVC模式实现简单的用户登录验证程序。
1.定义来显示数据

package dto; 
public class User {
    
   private String name;
   private String pwd;	
   public String getName() {
    	
   	return name;
   		}	
   public void setName(String name) {
    
   	this.name=name;		
   	}	
   public String getPwd() {
    	
   	return pwd;	}	
  public void setPwd(String pwd) {
    	
  	this.pwd=pwd;	
  	}	
  	}

2.UserCheck类用于判断用户名和密码是否正确

package service;
import dto.User;
public class userCheck {
     
	public boolean validate(User user) {
    		
	   if(user!=null&&user.getName().equals("JSPMVC")) {
    
	   	if(user.getPwd().equals("MVC")) {
    		
	   			return true;			
	   			}			
	   return false;		
	   }		
	   return false;	
	   	}
	   	}

3.编写Servlet完成请求控制

package servlet;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import service.userCheck;
import dto.User;
public class LoginCheckServlet extends HttpServlet {
    
	private static final long serialVersionUID = 1L;   
	protected void doGet(HttpServletRequest request,		
	HttpServletResponse response) throws ServletException, IOException {
    
			doPost(request,response);	} 	
        protected void doPost(HttpServletRequest request,			
        HttpServletResponse response) throws ServletException, IOException {
    		
        // TODO Auto-generated method stub		
        //doGet(request, response);	
        	request.setCharacterEncoding("utf-8");		 
        	 String name=request.getParameter("name");		 
        	 String pwd=request.getParameter("pwd");		  
        	 User user=new User();		  
        	 user.setName(name);		 
        	 user.setPwd(pwd);		  
        	 userCheck uc=new userCheck();		  
        	 if(uc.validate(user)) {
    		
        	 	  request.setAttribute("user", user);			  
        	 	  RequestDispatcher dis=request.getRequestDispatcher("loginSuccess.jsp");
        	 	  dis.forward(request,response);		
        	 	    }else {
    			 
        	 	   response.sendRedirect("loginCheck.jsp");		
        	 	     }	
        	 	     } 
        	 	     }

4.登录页面

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>loginCheck.jsp</title>
</head>
    <body>
        <form action="loginCheckServlet" method="post"><table>
        <tr>     
           <td>用户名:</td>    
           <td><input type="text" name="name"/></td></tr>
        <tr>     
           <td>密 码:</td>      
           <td><input type="password" name="pwd"/></td></tr>
        <tr>       
        <td><input type="submit" value="提交"/></td>       
        <td><input type="reset" value="重置"/></td>
        </tr>
        </table>
        </form>
        </body>
        </html>

登陆成功页面

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>loginSuccess.jsp</title>
</head>
    <body>
      <jsp:useBean id="user" type="dto.User" scope="requect"/>
      恭喜<jsp:getProperty property="name" name="user"/>登陆成功!
      </body>
      </html>

在这里插入图片描述
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/haha_7/article/details/109301303

智能推荐

C# 中textbox控件中输入的数字如何赋值给Int型变量_c# textbox 整型赋值-程序员宅基地

temp=txtConvertToInt(textbox.Text)public static int txtConvertToInt(string txt){int result = 0;bool f = int.TryParse(txt, out result);return result;}转载自https://zhidao.baidu.com/question/262555842836813525.html_c# textbox 整型赋值

GDB 调试 PostgreSQL-程序员宅基地

最近有使用到,总结有些许简单 安装 root@localhost ~]# yum install gdb 配置 PostgreSQL ./configure -prefix=/usr/local/pgsql --enable-debug [postgres@localhos...

前端如何获取URL路径上的指定参数值_前端如何接收到路径中的变量-程序员宅基地

用EL表达式直接获取request域里面的值常见的获取参数的方式-request;前端请求后端,利用return转发到一个新页面,如果携带参数,我们会创建request,request.setattribute("age","18");将参数放到request里后端用el表达式直接获取参数${age}常见的获取参数的方式-ModeAndView;后端创建ModeAndView mode对象,mode.setObject("age","18");将参数放到mode里,前端用el表达式直接获取参数_前端如何接收到路径中的变量

android 8.1隐藏通知栏上设置入口-程序员宅基地

frameworks/base/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.javaonFinishInflate()函数中添加mSettingsButton.setVisibility(View.GONE);

(纪中)2379. 【2020.02.01NOIP普及模拟4】怪兽_noip 打怪兽-程序员宅基地

(File IO): input:monster.in output:monster.out时间限制: 1000 ms 空间限制: 524800 KB 具体限制题目描述PYWBKTDAPYWBKTDAPYWBKTDA最近正在打怪兽,一个斯拉夫神话中的凶猛怪兽,一个有着多个头的巨大龙状爬行动物。开始的时候,怪兽有XXX个头,你有nnn种打击方式。如果你选择第i种打击方式,这个神奇的怪兽..._noip 打怪兽

android文字切换显示不出来,TabLayout关联ViewPager后不显示文字的解决方法-程序员宅基地

当使用addTab()方法给tablayout动态添加文字时可能会出现不显示标题文字的问题,而真实情况并不是不显示文字,而是ViewPager又给TabLayout加了许多空的标题,导致之前手动添加的标题被挤到后面,不信你多往后翻一翻是不是就出来了。那么这些空的标题是如何产生的呢,通过分析TabLayout源码很快就查出这个问题,其中有个方法的代码是这样的:private void populat..._android 文字切换太快看不到效果

随便推点

东北大学操作系统实验:进程同步和通信(生产者消费者问题模拟)_东北大学操作系统实验进程同步和通信-程序员宅基地

//producer_consumer.cc#include#include#includeusing namespace std;const int bufferSize = 8;vector buffer(bufferSize);queue waitQueue;int id;int writeptr, readptr;int consumer, producer;v_东北大学操作系统实验进程同步和通信

ios 简单的倒计时验证码数秒过程实现-程序员宅基地

timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES];//倒计时方法验证码实现倒计时60秒,60秒后按钮变换开始的样子-(void)timerFireMethod:(NSTimer *)theTi..._ios时间秒倒计时代码怎么设置

StringBuffer和StringBuilder的区别-程序员宅基地

StringBuffer和StringBuilder的区别_stringbuffer和stringbuilder的区别

Springboot + mybatis + druid 整合 (Mysql多数据源)_springboot+mybatis+druid整合-程序员宅基地

1. 依赖注入<!--SpringBoot--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.5.3</version></dependency><!--druid连接池--_springboot+mybatis+druid整合

linux(ubuntu)下成功编译安装了下切片软件CuraEngine_curaengine安装-程序员宅基地

详细流程以下有 http://blog.csdn.net/justdoithai/article/details/52746094 我来谈谈里面安装可能会遇到的问题0 .总体流程安装protobuf 安装libArcus 安装CuraEngine1./autogen.sh: 4: autoreconf: not found$ sudo apt-get install autoconf aut_curaengine安装

java新特性——读写锁ReadWriteLock-程序员宅基地

from URL : http://hi.baidu.com/zhizhesky/blog/item/cabcbb515b9b6808377abe5f.html在上文中提到了Lock接口以及对象,使用它,很优雅的控制了竞争资源的安全访问,但是这种锁不区分读写,称这种锁为普通锁。为了提高性能,Java提供了读写锁,在读的地方使用读锁,在写的地方使用写锁,灵活控制,如果没有写锁的情况下,读是无