Peanut's Book Shelf » 日志 » Way to Webdev:) Head First Servlet & JSP Chap3: 实战MVC
Way to Webdev:) Head First Servlet & JSP Chap3: 实战MVC
Mystra 发表于 2008-04-12 19:38:43
HTML里面是怎么请求Servlet帮助的呢...?
<html><body>
<form method="POST"
action="SelectBeer.do">
Select beer characteristics<p>
Color:
<select name="color" size="1">
<option>light
<option>amber
</select>
<br/><br/>
<center><input type="SUBMIT"></center>
</form></body></html>
SelectBeer.do需要在DD里面进行映射。
<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>
相应的Servlet代码,只是个例子...
public void doPost(HttpServletRequest request, HttpServletResponse reponse) throws IOException, ServletException {
response.setContentType("text/html"); // 设置MIME类型
PrintWriter out = reponse.getWriter();
out.println("Beer Select Advice<br>"); // 响应输出
String c = request.getParameter("color"); // 获取请求参数,后续章节详述
out.println("<br> got beer color " + c);
}
顺带一提...编译servlet的命令行
javac -classpath {tomcatdir}/common/lib/servlet-api.jar:classes:. -d classes src/com/..../abc.javac
好,作为将这个应用MVC化的一步,把表示层用JSP来做
<%@ page import="java.util.*" %>
<html><body>
<h1 align="center">Beer Recommendations JSP</h1>
<p>
<%
List styles = (List)request.getAttribute("styles");
Iterator it = styles.iterator();
while(it.hasNext() ) {
out.println("<br>try: " + it.next()) // ??表示层需要输出可变内容,但中间又夹杂<br>之类的固定格式,这应该怎么写才漂亮?
}
%>
</body></html>
好了,然后,我们在Servlet中把请求分派给这个jsp...
public void doPost(...) throws... {
String c = request.getParameter("color");
BeerExpert be = new BeerExpert();
List result = be.getBrands(c);
request.setAttrbute("styles", result);
RequestDispatcher view = request.getRequestDispatcher("result.jsp"); // 为jsp实例化一个请求指派器
view.forward(request, response); // 向JSP发送请求和响应
}
