初识MVC

这是《Head First Servlet&Jsp》上的一个小教程

不过我想说这本书是真的好,以前为了赶进度浑浑噩噩的看完了,最开始是一知半解,后来干脆就忘乎所以了。现在拿出来复习,力求把servlet和jsp学扎实。
直接开始吧:

1- 首先我们分解一下建立web项目的过程
*分析WEB应用的用户视图
*分析体系结构
*创建开发和部署环境(这一步一般在eclipse中全部搞定)
*迭代开发应用
2- 分析用户视图
感觉这一步在我这里很简单,首先是一个默认的form.html页面。
然后用一个result.jsp页面作为正常的回应。
3- 分析体系结构
也就是整个业务流程
*客户请求得到form.html—>容器(在这里是tomcat)获得form.html—>容器把这个表单交给浏览器,用户再在表单上回答问题—->浏览器把请求数据发送给容器—>容器根据URL匹配正确的servlet,并把请求传递给这个servlet—>servlet调用模型解决办法—>模型返回一个回答,servlet把这个回答添加到请求对象—>这个请求对象被servlet转发给JSP—>JSP从请求对象获取回答—>JSP用这个回答生成一个页面—>容器把这个页面返回给用户(浏览器)
4-正式开始
*首先在eclipse中建立一个Java Web项目
这是项目结构目录

*然后我们开始构建form.html
  <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1 align="center">Beer Selection Page</h1>
<form method="POST"
      action="SelectBeer.do"><!--这个才是重点: method="POST"表示用的post方法;action="SelectBeer.do”表示会发给逻辑资源SelectBeer.do处理 -->
      Select beer characteristics<p>
      Color:
      <select name="color" size="1">
       <option value="light">light</option>
       <option value="amber">amber</option>
       <option value="brown">brown</option>
       <option value="dark">dark</option>
      </selct>
      <br><br>
      <center>
      <input type="SUBMIT">
      </center>
      </form>
</body>
</html>  
*再构建控制器BeerSelect.java,其实是一个servlet。
    package com.example.web;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.example.modle.BeerExpert;
import com.sun.corba.se.spi.orbutil.fsm.Guard.Result;

public class BeerSelect extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
          doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub
        resp.setContentType("text/html");
        PrintWriter out=resp.getWriter();
        out.println("Beer Selection Advice<br>");
        //利用请求对象得到html页面的所选定的值
        String c=req.getParameter("color");
        //调用BeerExpert寻求帮助(调用模型更新数据)
        List brands=new BeerExpert().getBrands(c);
        //把这个更新放到请求对象
        req.setAttribute("styles", brands);
        //把请求派发给JSP
        req.getRequestDispatcher("result.jsp").forward(req, resp);
        //让JSP从请求对象得到更新之后,自己更新页面
        //把更新后的页面交给用户
        //输出响应
        //out.println("<br>Try"+brands.toString());
    }


}
*写好servlet之后,我们要配置大管家web.xml文件,在这里配置我们的URL映射,也就是,之所以用户提交表单的请求会被容器认出是给到目标servlet的。
 这是web.xml文件的关键配置(web.xml文件应该放在WEB-INF下):

<servlet>
  <servlet-name>Ch3 Beer</servlet-name>
  <servlet-class>com.example.web.BeerSelect</servlet-class>
  </servlet>

  <servlet-mapping>
  <servlet-name>Ch3 Beer</servlet-name>
  <url-pattern>/SelectBeer.do</url-pattern>
  </servlet-mapping>
*然后是model部分,更多时候是作为数据库交互部分,这里只是一个简单的逻辑。
    package com.example.modle;
    import java.util.*;
    public class BeerExpert{
    public List getBrands(String color){
        List brands=new ArrayList<>();
        if(color.equals("amber")){
            brands.add("Jack Amber");
            brands.add("Red Moose");
        }else{
            brands.add("Jail Pale Ale");
            brands.add("Gout Stout");
        }
        return brands;
    }

}

*最后是JSP视图部分
把放到styles中的List用脚本取出来即可。

<%
 List styles=(List)request.getAttribute("styles");
 Iterator it=styles.iterator();
 while(it.hasNext()){
     out.print("<br>try:"+it.next());
 }
%>

最后将项目部署到tomcat中即可。
代码非常简单,却是采用了MVC思想。最重要的一些步骤可见代码注释。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值