您的位置:首页 > 编程语言 > Java开发

【笔记】Spring MVC学习指南(附录)

2015-10-08 11:06 387 查看
本书附录部分内容有点多,记录下重要的部分。

Tomcat定义上下文:

显式:

1、在conf/Catalina/localhost目录下新建一个xml文件。(xml文件名即为上下文路径)

2、在conf/server.xml文件中添加一个Context元素。

<Context path="/demo" docBase="C:/apps/demo" reloadable="true" /> // reloadable为true时,一旦应用程序的Java类文件或其他资源文件改动,会重新加载应用程序


隐式:

1、将war文件或整个应用程序复制到webapps目录下。

Servlet:

1、在ServletResponse中定义的方法getWriter()返回一个可以向客户端发送文本的java.io.PrintWriter,默认情况下,使用编码ISO-8859-1。另一个方法getOutputStream()用来发送二进制数据。

2、经典的HTML表单示例:
package b2;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

@WebServlet(name = "FormServlet", urlPatterns = {"/form"})
public class FormServlet extends HttpServlet {
private static final long serialVersionUID = 54L;
private static final String TITLE = "Order Form";

@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
writer.println("<html>");
writer.println("<head>");
writer.println("<title>" + TITLE + "</title></head>");
writer.println("<body><h1>" + TITLE + "</h1>");
writer.println("<form method='post'>");
writer.println("<table>");
writer.println("<tr>");
writer.println("<td>Name:</td>");
writer.println("<td><input name='name'/></td>");
writer.println("</tr>");
writer.println("<tr>");
writer.println("<td>Address:</td>");
writer.println("<td><textarea name='address' " + "cols='40' rows='5'></textarea></td>");
writer.println("</tr>");
writer.println("<tr>");
writer.println("<td>Country:</td>");
writer.println("<td><select name='country'>");
writer.println("<option>United States</option>");
writer.println("<option>Canada</option>");
writer.println("</select></td>");
writer.println("</tr>");
writer.println("<tr>");
writer.println("<td>Delivery Method:</td>");
writer.println("<td><input type='radio' " + "name='deliveryMethod'" + " value='First Class'/>First Class");
writer.println("<input type='radio' " + "name='deliveryMethod' " + "value='Second Class'/>Second Class</td>");
writer.println("</tr>");
writer.println("<tr>");
writer.println("<td>Shipping Instructions:</td>");
writer.println("<td><textarea name='instruction' " + "cols='40' rows='5'></textarea></td>");
writer.println("</tr>");
writer.println("<tr>");
writer.println("<td> </td>");
writer.println("<td><textarea name='instruction' " + "cols='40' rows='5'></textarea></td>");
writer.println("</tr>");
writer.println("<tr>");
writer.println("<td>Please send me the latest " + "product catalog:</td>");
writer.println("<td><input type='checkbox' " + "name='catalogRequest'/></td>");
writer.println("</tr>");
writer.println("<tr>");
writer.println("<td> </td>");
writer.println("<td><input type='reset'/>" + "<input type='submit'/></td>");
writer.println("</tr>");
writer.println("</table>");
writer.println("</form>");
writer.println("</body>");
writer.println("</html>");
}

@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
writer.println("<html>");
writer.println("<head>");
writer.println("<title>" + TITLE + "</title></head>");
writer.println("</head>");
writer.println("<body><h1>" + TITLE + "</h1>");
writer.println("<table>");
writer.println("<tr>");
writer.println("<td>Name:</td>");
writer.println("<td>" + request.getParameter("name") + "</td>"); // 输入域名称存在的话,如果未填,返回空字符串而不是null
writer.println("</tr>");
writer.println("<tr>");
writer.println("<td>Address:</td>");
writer.println("<td>" + request.getParameter("address") + "</td>");
writer.println("</tr>");
writer.println("<tr>");
writer.println("<td>Country:</td>");
writer.println("<td>" + request.getParameter("country") + "</td>");
writer.println("</tr>");
writer.println("<tr>");
writer.println("<td>Shipping Instructions:</td>");
writer.println("<td>");
String[] instructions = request.getParameterValues("instruction");
if (instructions != null) {
for (String instruction : instructions) {
writer.println(instruction + "<br/>");
}
}
writer.println("</td>");
writer.println("</tr>");
writer.println("<tr>");
writer.println("<td>Delivery Method:</td>");
writer.println("<td>" + request.getParameter("deliveryMethod") + "</td>");
writer.println("</tr>");
writer.println("<tr>");
writer.println("<td>Catalog Request:</td>");
writer.println("<td>");
if (request.getParameter("catalogRequest") == null) {
writer.println("No");
} else {
writer.println("Yes");
}
writer.println("</td>");
writer.println("</tr>");
writer.println("</table>");
writer.println("<div style='border:1px solid #ddd;" + "margin-top:40px;font-size:90%'>");

writer.println("Debug Info<br/>");
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String paramName = parameterNames.nextElement();
writer.println(paramName + ": ");
String[] paramValues = request.getParameterValues(paramName);
for (String paramValue : paramValues) {
writer.println(paramValue + "<br/>");
}
}
writer.println("</div>");
writer.println("</body>");
writer.println("</html>");
}
}


3、部署描述符(web.xml)优先级高于WebServlet标注

4、JavaServer Page同时支持JSP注释和HTML注释:

JSP注释:<%-- --%> 

HTML注释: <!-- -->  (此类注释会被发送到HTML,客户端可见,基于此特性,开发人员可以通过在浏览器查看HTML源代码来确认哪一个JSP页面或片段产生了这段HTML片段)

5、JSP的include指令,URL以斜杠(/)开头,则为绝对路径,否则为相对路径。

6、
    <%@ include="xyz" %> 资源引入发生在页面转换时,即当JSP转换为Servlet;

    <jsp:include page="xyz.jsp" /> 资源引入发生在请求页面时。

7、jspf格式,会被当做静态文件对待。

最后一小节,详细讲解了部署描述符web.xml的各个知识点,可以当手册查询,就这样。

《SpringMVC学习指南》笔记,完结。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: