JSP+JavaBean的形式是SUN公司提供的一种简单开发模型,经常用于项目中某个较小的功能。
为了应付更复杂的应用系统,SUN公司推出了另一种开发模型即:JSP+JavaBean+Servlet。
MVC – 是指Model(即模型如JavaBean)、View(视图如JSP,只提供展示)、Control(控制层由Servlet担当).
在实际的开中,用的都是这种开发模式。甚至大家以后学习的webwork、jsf、struts,spring等都是MVC框架。(当然Spring拥有更多的功能)。
三层框架:表现层–>业务逻辑层–>数据层
Servlet+JSP+JavaBean的编程模型
MVC框架—-jsp中的model2
M:model,JavaBean–封装信息,包名一般为cn.hncu.domain
V:view,jsp页面(html也可)–面向用户,显示信息并提交用户信息
C:controller,用servlet实现–信息收集,并用JavaBean封装,调用service层实现相应的业务逻辑功能,再根据返回结果导向不同的结果页面(jsp(html)页面)
代码演示:
主页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>MVC框架演示1版本</title>
</head>
<body>
<h2>MVC登录页面</h2>
<form action="<%=request.getContextPath()%>/userServlet" method="post">
姓名:<input type="text" name="name"><br/>
密码:<input type="password" name="pwd"><br/>
<input type="submit" value="登录"><br/>
</form>
</body>
</html>
Controller层
package cn.hncu.user.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 cn.hncu.domain.User;
import cn.hncu.user.service.UserService;
public class UserServlet extends HttpServlet {
//注入
UserService us=new UserService();
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
//收集参数
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
//组织参数--封装成对象
User u=new User(name, pwd);//规范:先new空的User对象,在数据校验后,再调用相应的set函数
//调用service
u=us.login(u);
//根据返回结果导向不同结果页面
if(u!=null){
request.getSession().setAttribute("user", u);
//成功往session中存放登录成功信息,导向成功页面
response.sendRedirect(request.getContextPath()+"/jsps/wel.jsp");
}else{
//1.地址栏不显示index.jsp
// response.sendRedirect(request.getContextPath());//返回主页面
//2.地址栏显示index.jsp
response.sendRedirect(request.getContextPath()+"/index.jsp");//返回主页面
}
}
}
Model层
package cn.hncu.domain;
public class User {
private String id;
private String name;
private String pwd;
public User(){
}
public User(String name,String pwd){
this.name=name;
this.pwd=pwd;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", pwd=" + pwd + "]";
}
}
service层:
package cn.hncu.user.service;
import cn.hncu.domain.User;
import cn.hncu.user.dao.UserDao;
//规范:service和dao都要写成接口+实现类的方式开发
public class UserService {
//注入:
UserDao dao=new UserDao();
public User login(User user){
//真正的项目这里需要进行业务逻辑处理
return dao.login(user);
}
}
dao层:
package cn.hncu.user.dao;
import java.util.UUID;
import cn.hncu.domain.User;
//规范:service和dao都要写成接口+实现类的方式开发
public class UserDao {
//模拟Dao--真实项目在这里访问数据库且需要一个实现类,这里简化了
public User login(User user){
user.setId(UUID.randomUUID().toString().replace("-", ""));
System.out.println(user);
System.out.println("--到dao层一游");
if(user.getName().startsWith("hncu")){//如果登陆以hncu开头设置登录不成功,返回null
return null;
}
return user;
}
}
导向结果页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>MVC框架演示1版本</title>
</head>
<body>
<h2>欢迎页面</h2>
<%=session.getAttribute("user") %><br/><br/>
欢迎你,${user.name }<br/>
你的密码是:${user.pwd }<br/>
</body>
</html>