使用Servlet+jsp构建MVC体系结构的Web应用
Posted 小竹_phper
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Servlet+jsp构建MVC体系结构的Web应用相关的知识,希望对你有一定的参考价值。
使用简单的MVC体系结构构建Web应用
1、客户请求得到form.html页面;
2、容器获得form.html页面;
3、容器把这个页面返回给浏览器,用户再在浏览器上回答表单上的问题;
4、浏览器把请求数据发送给容器;
5、容器根据URL查找正确servlet,并把请求传递给这个servlet;
6、servlet调用BeerExpert寻求帮助;
7、这个“专家”类返回一个回答,servlet把这个回答增加到请求对象;
8、servlet把请求转发给JSP;
9、JSP从请求对象得到回答;
10、JSP为容器生成一个页面;
11、容器把这个页面返回给心满意足的用户。
一、工程的目录结构如下图所示:
这里将servlet-api.jar包放到了lib目录下,并构建路径;
二、第一个表单页面的html:form.html
这个HTML很简单,它只包含标题文本,一个下拉列表(用户可以从中选择一种啤酒颜色),另外还有一个提交按钮。<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Beer Selection Page</title>
</head>
<body>
<h1>Beer Selection Page</h1>
<form method="post" action="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>
</select>
<br><br>
<input type="submit">
</form>
</body>
</html>
三、在开发环境中创建DD
创建以下XML文档,取名为web.xml。<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<welcome-file-list>
<welcome-file>form.html</welcome-file>
</welcome-file-list>
<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>
</web-app>
四、构建模型类
模型可能非常复杂。通常会涉及与遗留数据库的连接,还要调用复杂的业务逻辑。以下就是我们“复杂的”、基于规则的专家系统,可以用来提供啤酒建议。<span style="font-size:14px;">package com.example.model;
import java.util.*;
public class BeerExpert
public List<String> getBrands(String color)
List<String> brands = new ArrayList<String>();
if(color.equals("amber"))
brands.add("Jack Amber");
brands.add("Red Moose");
else
brands.add("Jail Pale Ale");
brands.add("Gout Stout");
return brands;
</span><span style="font-size:24px;">
</span>
五、编写控制器servlet的代码
注意,模型只是普通的Java,所以我们会像调用任何其他Java方法一样,先实例化模型类,再调用它的方法!<span style="font-size:14px;">package com.example.web;
import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.example.model.BeerExpert;
public class BeerSelect extends HttpServlet
private static final long serialVersionUID = -5212877687087164982L;
public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException
String str2 = request.getParameter("color");
BeerExpert be = new BeerExpert();
List<String> result = be.getBrands(str2);
// response.setContentType("text/html");
// PrintWriter out = response.getWriter();
// out.println("Beer Selection Advice<br>");
// Iterator<String> it = result.iterator();
// while(it.hasNext())
// out.println("<br>try: " + it.next());
//
request.setAttribute("styles", result);
RequestDispatcher view = request.getRequestDispatcher("result.jsp");
view.forward(request, response);
</span><span style="font-size:24px;">
</span>
六、创建提供建议的JSP“视图”:result.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import="java.util.*" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Beer V1</title>
</head>
<body>
<h1 align="center">Beer Recommendations JSP</h1>
<p>
<%
List<String> styles = (List<String>)request.getAttribute("styles");
Iterator<String> it = styles.iterator();
while(it.hasNext())
out.print("<br>try: " + it.next());
%>
</body>
</html>
七、测试应用
点击提交,跳转到下面的页面:以上是关于使用Servlet+jsp构建MVC体系结构的Web应用的主要内容,如果未能解决你的问题,请参考以下文章
《Head First Servlets & JSP》-3-1st servlet MVC demo
当 Servlet、JSP 和轻量级 DAO 层可以工作时,为啥要使用 MVC 框架?
初识Jsp,JavaBean,Servlet以及一个简单mvc模式的登录界面
熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器过滤器等Web组件以及MVC架构