java web初體驗

github: https://github.com/Andy888888/javaWeb-Exercise

創建工程

1.創建一個Empty Project
2.添加一個Module,選擇Web Application類型,勾選上Create web.xml
3.在src中添加一個AServlet類,繼承HttpServlet
重寫doGet方法,千萬不能留著super.doGet(req, resp);否則會有405錯誤

下圖是super源碼

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String protocol = req.getProtocol();
        String msg = lStrings.getString("http.method_get_not_supported");
        if (protocol.endsWith("1.1")) {
            resp.sendError(405, msg);
        } else {
            resp.sendError(400, msg);
        }

    }



配置servlet映射

<servlet>:配置servlet類和servlet名稱的映射

<servlet-name>:servlet名稱
<servlet-class>:servlet類的具體class指向,需要全包名路徑

<servlet-mapping>:配置servlet和html中的請求地址

<servlet-name>:servlet名稱
<url-pattern>:html中的請求地址

web.xml示例

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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"
         version="3.1">

    <servlet>
        <servlet-name>loginServlet</servlet-name>
        <servlet-class>severlet.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>loginServlet</servlet-name>
        <url-pattern>/loginServlet</url-pattern>
    </servlet-mapping>

</web-app>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>測試</title>
  </head>
  <body>
      <form action="/loginServlet">
        <input id="name" name="name" type="text" />
          <input type="submit" value="提交">
      </form>
  </body>
</html>

web.xml總結

也就是說,一個servlet需要配置兩個根節點,類似兩張表,兩個節點下的servlet-name子節點是關聯字段,兩個節點,描述了servlet的名稱、class類、請求時的url地址。




前后端數據傳遞

后臺獲取jsp提交的數據

String name = request.getParameter("name");

后臺將數據傳遞給jsp

request.setAttribute("student", studentDo);
request.getRequestDispatcher("detail.jsp").forward(request, response);

jsp獲取后臺數據

// student為后臺傳遞值的key
1.${student} <br/>
2.${student.name} <br/>
3.${student["gender"]} <br/>
4.${requestScope.get("student")} <br/>
5.<%=request.getAttribute("student") %> <br/>



EL表達式(Expression Language)

語法結構: ${expression}

價值:取代<% java code %> 這種復雜的方式,使得獲取值等方式更加簡化

pageScope

將頁面范圍的變量名稱映射到其值。例如,EL 表達式可以使用 ${pageScope.objectName} 訪問一個 JSP 中頁面范圍的對象,還可以使用 ${pageScope .objectName. attributeName}訪問對象的屬性。

requestScope

將請求范圍的變量名稱映射到其值。該對象允許訪問請求對象的屬性。例如,EL 表達式可以使用 ${requestScope. objectName}訪問一個 JSP 請求范圍的對象,還可以使用 ${requestScope. objectName. attributeName} 訪問對象的屬性。

sessionScope

將會話范圍的變量名稱映射到其值。該對象允許訪問會話對象的屬性。例如:${sessionScope. name}

applicationScope

將應用程序范圍的變量名稱映射到其值。該隱式對象允許訪問應用程序范圍的對象。


注意事項

1、當要存取的屬性名稱中包含一些特殊字符,如 . 或 - 等并非字母或數字的符號,就一定要使用“[ ]“。例如:${ user. stu-name}應當改為${user["stu-name"]}

2、< %=request. getParameter(“username”)% > 等價于 ${ param. username }

3、例如,但是下面的那句EL語言可以完成如果得到一個username為空,則不顯示null,而是不顯示值.

4、以下執行順序為4 1 2 3。
${requestScope.userlist} 1
${sessionScope.userlist} 2
${applicationScope.userlist} 3
${pageScope.userlist} 4
${userlist}



最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容