Java Web

JavaWeb

Servlet

1
2
servlet-api
jsp-api

项目结构

  • /
  • module_a
    • src
      • main
        • java
          • com.author.project
            • HelloClass.java
        • resources
        • webapp
          • WEB-INF
            • web.xml
          • index.jsp
    • test
      • java

基本用法

1
2
3
public class X entends HttpServlet {
// TODO
}

向JSP传递参数,可以用Session。

用户不可见的页面可以放到WEB-INF下。

路径映射

注册服务

1
2
3
4
5
6
7
8
<servlet>
<servlet-name></servlet-name>
<servlet-class></servlet-class>
</servlet>
<servlet-mapping>
<servlet-name></servlet-name>
<servlet-url></servlet-url>
</servlet-mapping>

也可以使用注解

1
@WebServlet(name = "ActionServlet",urlPatterns = "/action")

错误页面

1
2
3
4
5
6
7
8
9
<!-- 放到最后 -->
<servlet>
<servlet-name></servlet-name>
<servlet-class></servlet-class>
</servlet>
<servlet-mapping>
<servlet-name></servlet-name>
<servlet-url></servlet-url>
</servlet-mapping>

过滤器

注册过滤器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<filter>
<filter-name>CountFilter</filter-name>
<filter-class>com.pjb.filter.CountFilter</filter-class>
<init-param>
<!-- 参数名 -->
<param-name>count</param-name>
<!-- 参数值 -->
<param-value>5000</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>CountFilter</filter-name>
<url-pattern>/index.jsp</url-pattern>
</filter-mapping>

也可以使用注解

1
2
@WebFilter (filterName= "encodingFilter" ,urlPatterns= "/*" , 
initParams = { @WebInitParam(name = "count", value = "5000") })

参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 初始化参数
this.getInitParameter();
// 配置
this.getServletConfig();
// 上下文,代表当前web应用
this.getServletContext();
// 功能:
// 1. Servlet 之间共享数据
context.setAttribute("key", "value");
context.getAttribute("key");
// 2. 获取参数
context.getInitParameter();
// 3. 转发 200 OK
context.getRequestDispatcher().forward();
// 4. 读取资源文件 资源文件在 resources 下 db.properties
Properties prop = new Properties();
prop.load(context.getResourceAsStream("/WEB-INF/classes/com/.../db.properties"));

重定向

1
2
resp.setStatus(302);
resp.sendRedirect();

请求

1
2
3
4
5
// 获取请求参数
req.getParameter();
req.getParameterValues();
// 转发请求
req.getRequestDispatcher().forward();