构建一个真正的基于MVC软件设计模式的Web应用

目标:要写一个HTML表单、一个servlet控制器、一个模型(普通的Java类)、一个XML部署描述⽂文件,以及 ⼀个JSP视图。完成一个小的、完整的Java Web应用。(实现一个根据啤酒颜色,返回相应啤酒品牌的小Java web应用)

创建环境,写源代码、配置文件等等。

目录结构如下:



创建form.html

<html>
	<body>
	<h1 align="center">Beer Selection Page</h1>
	<form method="POST" action="BeerSelect.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>
			<center>
				<input type="SUBMIT">
			</center>
		</form>
	</body>
</html>

创建BeerSelect.java

package com.example.web;//包路径确保与创建的开发环境?录匹配
import com.example.model.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class BeerSelect extends HttpServlet{
//我们使?doPost来处理html请求,因为html表单指出: method=post
public void doPost(HttpServletRequest reque,HttpServletResponse response)throws IOException{
response.setContentType("text/html;charset=UTF-8;pageEncoding=UTF-8");
PrintWriter out = response.getWriter();
out.println("Beer Selection Advice<br>");
//这个?法来?ServletRequest接?。注意这个参数与HTML<select>标记中"name"属性的值匹配
String c = reque.getParameter("color");
BeerExpert beerExpert = new BeerExpert();
out.println("<br>Got beer type:" + beerExpert.getBrands(c));
}
}

创建BeerExpert.java

package com.example.model;
import java.util.*;
public class BeerExpert{
	public String getBrands(String color){
		if(color.equals("light"))
			return "雪花啤酒";
			return "青岛啤酒";
	}
}

配置web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">	
	 <welcome-file-list>
		<welcome-file>
            form.html
        </welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>BeerSelect</servlet-name>
        <servlet-class>com.example.web.BeerSelect</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>BeerSelect</servlet-name>
        <url-pattern>/BeerSelect.do</url-pattern>
    </servlet-mapping>

</web-app>

编译

javac -classpath C:\tomcat\lib\servlet-api.jar C:\tomcat\webapps\beer-v1\WEB-INF\classes\com\example\model\BeerExpert.java C:\tomcat\webapps\beer-v1\WEB-INF\classes\com\example\web\BeerSelect.java
由于BeerSelect中引用BeerExpert且BeerSelect和BeerExpert不在同一个包内,所以只编译BeerSelect时会遇到找不到BeerExpert的包的情况。解决方法:一起编译,如上。
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页