在早期還沒(méi)提出MVC架構(gòu)理念,工程師們只是單純?yōu)榱耸勾a的邏輯結(jié)構(gòu)看上去清晰,以及為了編寫(xiě)的效率,引入了JSP文件,JSP的本質(zhì)依舊是將JSP文件編譯為Servlet類(lèi),然后再動(dòng)態(tài)加載程序代碼。
接下來(lái)的代碼都采用servlet規(guī)范來(lái)寫(xiě),將不再模擬servlet類(lèi)。
創(chuàng)建第一個(gè)JavaWeb應(yīng)用
servlet規(guī)范規(guī)定,JavaWeb應(yīng)用必須采用固定的目錄結(jié)構(gòu)
先不使用IDE自己手動(dòng)編寫(xiě)一個(gè)簡(jiǎn)單的JavaWeb應(yīng)用
以下是一個(gè)最簡(jiǎn)單的JavaWeb目錄結(jié)構(gòu):
javaweb目錄結(jié)構(gòu).jpg
1.新建一個(gè)login.htm文件:
<html>
<head>
<title>helloapp</title>
</head>
<body>
<form name="loginForm" method="POST" action="dispatcher">
<table>
<tr>
<td><div align="right">User Name:</div></td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td><div align="right">Password:</div></td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td><input type="submit" name="submit" value="submit"></td>
<td><input type="reset" name="reset" value="reset"></td>
</tr>
</table>
</form>
</body>
</html>
文件中表單通過(guò)action="dispatcher"指定將要跳轉(zhuǎn)到的uri地址:http://182.61.35.14:8000/helloapp/dispatcher
2.新建一個(gè)DispatcherServlet類(lèi):
package mypack;
import java.io.IOException;
import javax.servlet.GenericServlet;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class DispatcherServlet extends GenericServlet {
private String target = "/hello.jsp";
//響應(yīng)客戶(hù)端請(qǐng)求
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
request.setAttribute("USER", username);
request.setAttribute("PASSWORD", password);
ServletContext context = getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher(target);
dispatcher.forward(request, response);
}
}
通過(guò)RequestDispatcher dispatcher = context.getRequestDispatcher("/hello.jsp");將請(qǐng)求轉(zhuǎn)交給hello.jsp文件處理
//編譯命令為
javac -classpath /usr/local/tomcat/lib/servlet-api.jar -sourcepath src -d WEB-INF/classes/ src/mypack/DispatcherServlet.java
4.新建web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>mypack.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/dispatcher</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>login.htm</welcome-file>
</welcome-file-list>
</web-app>
在web.xml中配置DispatcherServlet類(lèi)與uri的映射,讓客戶(hù)端能夠找到它。
4.新建hello.jsp文件:
<html>
<head>
<title>helloapp</title>
</head>
<body>
<b>Hello: <%= request.getAttribute("USER") %></b>
</body>
</html>
通過(guò)內(nèi)嵌的java語(yǔ)句request.getAttribute("USER");獲得動(dòng)態(tài)數(shù)據(jù),并返回到瀏覽器顯示。
//編譯命令為
忘了,網(wǎng)上找一下