实现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>
分享到:
相关推荐
MVC自定义框架代码
很不错的程序,自定义的MVC框架,类似Struts
java 自定义框架 mvc模式 并且是一个登录的例子说明了框架怎么使用
自定义 MVC 框架 struts2
mvc自定义框架小案例,帮助您理解mvc
MyMVC框架说明 * 本框架起源于课堂教学实践,目的在于...*框架对表单使用用户自定义类进行了封装,用户需要强制类型转换为具体类型拆出数据。 *整体上MyMVC 博文链接:https://sun-pursuer.iteye.com/blog/223289
自定义MVC框架,原文:https://blog.csdn.net/weixin_43075298/article/details/89359169
为更好的了解struts2的框架的原理 自定义框架 去更好的理解和认识struts
MVC自定义权限控制示例代码,一个小样例,通过继承MVC框架中的AuthorizeAttribute来自定义权限。
C# MVC 快速开发框架,带工作流自定义字段 权限 组织架构 代码生成器, 自动关联父子表,适合开发ERP OA 各种软件 web版 也可以 加WebApi 开发手机App 后台
自定义MVC框架,主要是控制层的代码,可以让人更加简单明白的了解自定义MVC框架的结构
这是我写的第一个MVC框架,很简单; 对于理解MVC以及框架技术有一定的帮助;
自定义MVC框架.pdf
本资源系本人在培训机构的资料,包含自定义MVC(自己搭建一个mvc框架,其实也就是sturts的核心内容)和sturts代码示例!自定义MVC对sturts学习理解很有帮助!希望对大家有所帮助
jsp自定义标签实例+mvc自定义框架 jsp自定义标签实例+mvc自定义框架 jsp自定义标签实例+mvc自定义框架
mvc.xml配置 <forward name="ByUser" path="/BooksAction.action?methodName:getIndex" redirect="true"/> </config>
这是基于PHP面向对象的自定义MVC框架高级项目开发视频