这里相当与前台页面–index.jsp(相当于表现层)
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<head>
<title>第一个web项目的主页</title>
</head>
<body>
<h2>主页主页</h2>
<h2>湖南长沙</h2>
<h3>发布方式一......</h3>
<h3>分层架构演示</h3>
<form action="layer" method="post">
姓名:<input type="text" name="name"/><br/>
年龄:<input type="text" name="age"/><br/>
<input type="submit" value="保存"/>
</form>
<br/><br/><br/><br/>
<br/><br/><br/><br/>
</body>
</html>
这里相当与前台代码功能–LayerServlet.java(相当于逻辑层)
package cn.hncu.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.dao.StudDao;
import cn.hncu.dao.StudDaoImpl;
import cn.hncu.domain.Stud;
public class LayerServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("经过后台,可以控制");
//演示后台控制
//收集参数
String name=(String) req.getParameter("name");
String strAge=(String) req.getParameter("age");
//组织参数
Stud st=new Stud();
st.setName(name);//从前端页面获取的数据
st.setId("001");
st.setAge(Integer.parseInt(strAge));
//调用dao层
StudDao dao=new StudDaoImpl();
boolean boo=dao.save(st);
//这种格式是从后台传来的
req.setAttribute("name", "这是保存之后的姓名"+st.getName());
//根据结果导向--转发方式
if(boo){
req.getRequestDispatcher("/jsps/result.jsp").forward(req, resp);
}else{
req.getRequestDispatcher("/jsps/failure.jsp").forward(req, resp);
}
}
}
dao层–调用数据层(这里数据层省略了)
接口:
package cn.hncu.dao;
import cn.hncu.domain.Stud;
public interface StudDao {
public abstract boolean save(Stud st);
}
实现类:
package cn.hncu.dao;
import cn.hncu.domain.Stud;
public class StudDaoImpl implements StudDao {
@Override
public boolean save(Stud st) {
System.out.println(st.toString());
if(st.getAge()<=25){
return true;
}
return false;
}
domain–Stud对象(相当于值对象)
package cn.hncu.domain;
public class Stud {
private String id,name;
private int age;
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Stud [id="+id+", name=" +name+", age=" + age"]";
}
根据返回值true所返回的页面–result.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>重定向/转发结果注册页面</title>
</head>
<body>
<h2>重定/转发向结果页面</h2>
<%
String name=(String)request.getAttribute("name");
out.println("Attribute:name="+name);
String nm=(String)request.getParameter("name");
out.println("Parameter:name="+nm);
%>
<br/>
<!-- 网页内的"/"代表helloWeb外面的目录,所以网页文本路径一定要加项目根目录:"/helloWeb/" -->
<!-- 而java代码内的"/"代表项目根目录,所以只要写文本存在目录就好了 -->
<img alt="" src="/helloWeb/images/1.jpg">
</body>
</html>
根据结果false所导向的结果页面–failure.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>重定向/转发结果注册页面</title>
</head>
<body>
<h2>保存失败结果页面...</h2>
<br/>
</body>
</html>