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>