初识MVC

来源:互联网 发布:游戏编程培训学校 编辑:程序博客网 时间:2024/05/18 03:30

这是《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思想。最重要的一些步骤可见代码注释。

0 0
原创粉丝点击