JavaWeb Servlet技术及其应用实践
什么是Servlet?
Servlet是JavaWeb中的一个组件,是JavaWeb中实现业务逻辑的重要方式之一。在JavaWeb中,Servlet让我们可以获取HTTP请求的参数、读写HTTP头信息、返回HTTP响应、写入HTTP头信息等。
Servlet的应用实践
基础应用
我们可以通过以下步骤使用Servlet:
- 创建Servlet类,并继承HttpServlet类
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("Hello World!");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
- 在web.xml中配置Servlet类
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.example.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
- 发布到服务器并访问http://localhost:8080/contextPath/hello
Servlet与JSP共同应用
在Servlet中我们可以使用request.setAttribute()方法设置请求属性,在JSP中使用request.getAttribute()获取这些请求属性,在JSP中使用EL表达式(${参数名})获取业务逻辑中的值。
- 在Servlet中设置请求属性
request.setAttribute("username", "张三");
request.setAttribute("age", 18);
request.setAttribute("list", Arrays.asList("Java", "C++", "Python"));
- 在JSP中使用EL表达式获取请求属性
姓名:${username}
年龄:${age}
爱好:<c:forEach items="${list}" var="item"><c:out value="${item}"/>, </c:forEach>
Servlet中使用JSON
在JavaWeb中,我们经常会使用JSON来表示数据格式。可以通过自定义Servlet,使用response.getWriter()方法将JSON字符串作为响应内容返回给客户端。
- 使用第三方JSON库fastjson库
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.61</version>
</dependency>
- 在Servlet中使用fastjson将业务数据转成JSON
List<Map<String, Object>> result = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("name", "张三");
map1.put("age", 18);
Map<String, Object> map2 = new HashMap<>();
map2.put("name", "李四");
map2.put("age", 20);
result.add(map1);
result.add(map2);
String json = JSON.toJSONString(result);
response.getWriter().write(json);
总结
本文讲解了Servlet的基本概念、应用实践及其与JSP的共同应用和如何使用JSON。通过本文你可以快速入门Servlet,运用Servlet解决实际问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaWeb Servlet技术及其应用实践 - Python技术站