实现MVC自定义框架(简单实现登录功能)
一,模型层:
实体类,接口(实体类接口,Action接口),接口实现类(实体类接口实现类,Action接口实现类)
代码:
package entity;
/**
* 用户类
* @author Administrator
*/
public class User {
private String username;//用户名
private String password;//密码
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
package dao;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Action接口
* @author Administrator
*
*/
public interface Action {
public String execute(HttpServletRequest request,HttpServletResponse response);
}
package dao;
import entity.User;
/**
* 用户类接口
* @author Administrator
*/
public interface UserDao {
//登录方法
public User login(String username,String password);
}
package dao.impl;
import dao.UserDao;
import entity.User;
/**
* 用户接口的实现类
* @author Administrator
*/
public class UserDaoImpl implements UserDao {
/**
* 登录
*/
public User login(String username, String password) {
User user=null;
if(username.equals("admin")&&password.equals("admin")){
user=new User();
user.setPassword(password);
user.setUsername(username);
}
return user;
}
}
package dao.impl;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dao.Action;
import entity.User;
/**
* 登录Action类实现Action接口
* @author Administrator
*/
public class LoginAction implements Action {
public String execute(HttpServletRequest request,
HttpServletResponse response) {
//接收参数
String username=request.getParameter("username");
String password=request.getParameter("password");
//创建UserDaoImpl对象
UserDaoImpl udi=new UserDaoImpl();
//调用登录方法
User user=udi.login(username, password);
//判断 User对象是否为空
if(user!=null){
return "success.jsp";
}else{
return "error.jsp";
}
}
}
二、控制器层,ActionServlet类(添加一个获得Action的方法)
web.xml:配置如下
<servlet-name>ActionServlet</servlet-name>
<servlet-class>servlet.ActionServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ActionServlet</servlet-name>
<url-pattern>*.action</url-pattern><!-- 过滤所有以.action结尾 -->
</servlet-mapping>
package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dao.Action;
import dao.impl.LoginAction;
public class ActionServlet extends HttpServlet {
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//得到Action对象
Action action=getAction(request);
//调用Action实现类方法
try {
String result=action.execute(request, response);
if(result!=null){
response.sendRedirect(result);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 创建一个获得Action的方法
* @param request
*/
public static Action getAction(HttpServletRequest request){
Action action=null;
//截取action请求名(例如页面的登录:<form action="login.action" method="post">)
String uri=request.getRequestURI();
System.out.println("request.getRequestURI()---"+uri);
//结果:request.getRequestURI()---/qifei_mvc_kuangjia_zuoye/login.action
StringBuffer url=request.getRequestURL();
System.out.println("request.getRequestURL()--"+url);
//结果:request.getRequestURL()--http://localhost:8080/qifei_mvc_kuangjia_zuoye/login.action
String contextPath=request.getContextPath();
//结果:request.getContextPath()--/qifei_mvc_kuangjia_zuoye
System.out.println("request.getContextPath()--"+contextPath);
String actionUrl=uri.substring(contextPath.length());
System.out.println("actionUrl--"+actionUrl);
String actionName=actionUrl.substring(1,actionUrl.lastIndexOf(".")).trim();
//判断请求名
if(actionName.equals("login")){
action=new LoginAction();
}
return action;
}
}
三、页面
<body>
<form action="login.action" method="post">
用户名:<input type="text" name="username"/><br/>
密码:<input type="password" name="password"/><br/>
<input type="submit" value="提交">
</form>
</body>
分享到:
相关推荐
Java程序中的MVC(Model-View-Controller)框架是一种广泛应用于Web...以上是对"java程序,MVC自定义框架"的详细解析,该框架旨在提供一种高效、灵活的Web开发解决方案,让开发者能够更好地组织代码,提升开发效率。
**PureMVC C# 框架详解** PureMVC是一种流行且强大的多层应用程序架构框架,最初设计用于创建富互联网应用(RIA),但随着时间的推移,它已经被广泛移植到各种平台,包括服务器端环境。本文将深入探讨PureMVC在C#中...
SpringMVC是目前主流的Java Web MVC框架之一,主要用于构建Web应用程序。它基于Spring框架,在Spring的基础上进行扩展,为创建Web应用提供了一个简单、灵活、可配置的模型-视图-控制器(MVC)设计。SpringMVC通过分离...
6. **客户端参考手册**:《客户端参考手册》FineUIMvc_JavaScript_参考手册_v1.1.0.zip则可能涵盖了FineUI的JavaScript API,包括各个控件的用法、事件处理、动画效果、以及自定义扩展等内容。 7. **在线示例源代码...
5. **依赖注入(DI)**:为了提高代码的可测试性和可维护性,自定义框架通常会包含依赖注入机制,允许对象之间松散耦合。 6. **AOP(面向切面编程)**:用于处理横切关注点,如日志、事务管理等,让核心业务代码...
Spring MVC源码的深入理解有助于开发者更好地掌握框架的工作原理,优化代码性能,甚至为自定义扩展提供基础。 压缩包内的文件"www.pudn.com.txt"可能是一个链接或说明文档,指向更多关于该主题的资源,例如在pudn....
通过深入研究这个自定义框架,我们可以对Spring MVC和Struts等现代MVC架构有更深入的理解。 1. **MVC模式**:Model-View-Controller模式是Web应用程序设计的核心理念。Model负责管理数据和业务逻辑,View负责展示...
标题“Ant_PureMVC_Project.rar”提示我们这是一个基于Ant构建工具和PureMVC设计模式的项目框架。Ant是Apache软件基金会的一个Java项目,它是一个可扩展的构建工具,允许开发者通过XML配置文件来编译、装配和部署...
在Web开发中,ASP.NET MVC是一个基于C#的MVC框架,它提供了一套完整的服务和支持,使得开发者可以轻松地构建MVC结构的Web应用。在ASP.NET MVC中,路由、模型绑定、过滤器等特性大大简化了控制器的编写。 **...
本文将深入探讨Java中基于MVC(Model-View-Controller)模式的自定义框架,以及如何通过一个登录示例来理解和应用这个框架。 **MVC模式详解** MVC模式是一种广泛应用于Web开发的设计模式,它将应用程序分为三个主要...
3. **路由系统**:ASP.NET MVC的路由系统允许开发者自定义URL模式,使得URL更加语义化,有利于SEO优化。 4. **强类型视图**:Razor视图引擎支持强类型,可以减少类型转换错误,提高开发效率。 5. **过滤器**:过滤...
ASP.NET MVC 框架与 EasyUI 的结合是企业级应用程序开发中常见的一种技术栈,尤其在构建通用权限管理系统时,这种组合能提供高效、灵活且功能强大的解决方案。本文将深入探讨这两个技术如何协同工作,以及如何利用...
jqSuiteASPNET_MVC_4_6_0_0 是一个专门为ASP.NET MVC框架设计的jQuery控件集合,由trirand公司开发。这个版本号(4.6.0.0)表明这是一个中期的稳定版本,可能包含了之前版本的改进和新功能。jqSuite主要以其强大的...
Spring MVC是Spring框架的一部分,专为构建Web应用程序而设计。这个名为"Spring MVC 3.0.rar"的压缩包包含了一份关于Spring MVC 3.0版本的实战指南PPT,是Java开发者深入理解Spring MVC架构的宝贵资源。 **Spring ...
在QT框架中,Model-View-Controller(MVC)是一种常用的设计模式,它将应用程序的数据、用户界面和逻辑控制分离开来,使得代码更易于维护和扩展。`modelview.rar`这个压缩包文件可能包含了关于如何在QT环境中实现MVC...
`mvc_demo.src.jar` 文件很可能是这个MVC框架的源代码包,包含了实现MVC模式的各种类和方法。开发者可能已经封装了控制器、模型和视图的相关类,便于理解和使用。通常,这样的代码库会包含以下组件: 1. **控制器类...
ASP.NET MVC是一个强大的框架,用于构建可伸缩、高性能、易于维护的Web应用程序。这个名为“wf.rar”的压缩包文件包含的内容显然与使用ASP.NET MVC技术构建的智能表单和管理系统有关,特别是强调了AJAX的运用。让...
这种自定义框架可以帮助开发者快速构建基于Servlet的MVC应用,提高开发效率。 7. **MVC的优势** - **分离关注点**:模型、视图和控制器的分离使得开发人员能够专注于各自领域的代码编写,提高工作效率。 - **可...
默认情况下,ASP.NET MVC框架提供了一种简单的路由机制来处理常见的URL结构。然而,在实际开发过程中,我们往往需要更加灵活的路由规则来满足特定的需求,比如创建友好的URL(即伪静态URL)。 在本篇文章中,我们将...
在当今的互联网开发中,Spring MVC 和 Hibernate 是两个非常重要的框架,它们在企业级应用开发中起着关键作用。本项目"Spring MVC bbs"结合了Spring3和Hibernate,构建了一个功能完备的BBS论坛系统,适合进行二次...