Servlet编程
Servlet与JSP内置对象
JSP和Servlet等价,那么在Servlet中也可以使用JSP内置对象
out对象
通过response获取,因为是向客户端发送信息
PrintWriter out=resp.getWriter();
在方法中获取out对象,默认不支持中文,因为没有中文编码
resp.setContentType("text/html;charset = gb2312");
session对象
通过request对象获取,因为是根据当前的请求获取与之关联的HttpSession对象
HttpSession session = req.getSession();
application对象
ServletContext application = this.getServletContext();
可以使用application实现跳转(使用response.sendRedirect重定向)
RequestDispatcher rd=application.getRequestDispatcher("URL地址");
rd.forward(req,resp);
Servlet读取参数
设置全局参数
<context-param>
<param-name>name</param-name>
<param-value>Mike</param-value>
</context-param>
所有Servlet都可以访问
设置局部参数
<servlet>
<servlet-name>WelcomeServlet</servlet-name>
<servlet-class>org.example.learnServlet</servlet-class>
<init-param>
<param-name>name</param-name>
<param-value>John</param-value>
</init-param>
</servlet>
只有指定Servlet才能访问
获得全局参数
ServletContext application = this.getServletContext();
String name = application.getInitParameter("name2")
通过application
获得局部参数
String name = this.getInitParameter("name1");
this指Servlet本身
过滤器Filter
可以解决中文乱码问题
可以对网页访问进行安全验证
可以区别用户的管理员
Filter à Web组件
对Web应用前期处理和后期处理进行控制
可以拦截请求和响应、查看提取操作客户端和服务器交换的数据
在web.xml中配置,作用HTML、JSP、Servlet
客户端àFilteràHTML/JSP/Servlet
因为过滤器是后面加入的,对源代码不产生影响,所以适合扩展
创建过滤器
创建一个Java类
public class learnedFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
// 设置请求的字符编码为"gb2312"
servletRequest.setCharacterEncoding("gb2312");
// 继续执行过滤器链中的下一个过滤器或目标资源(如Servlet)
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
实现Filter接口,及其方法
在doFilter方法中解决了客户端传送数据给服务器时,服务器读取中文乱码问题
若不在这里设置,还需要挨个给Servlet中设置
在web.xml中配置过滤器
<filter>
<filter-name>filter</filter-name>
<filter-class>org.example.learnedFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-name> 指定过滤器名字
<filter-class> 指定过滤器类路径
<filter-mapping>配置过滤器映射
<url-pattern> 指定过滤模式,当URL中包含指定的路径时,触发过滤器
这里/*表示过滤所有文件,以/开头表示根路径
异常处理
一个共享的异常处理页面
创建一个JSP页面,在开头部分添加isErrorPage=“true”
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
之后,在web.xml页面中注册
<error-page>
<location>/error.jsp</location>
<exception-type>java.lang.Exception</exception-type>
</error-page>
location指定错误页面类路径
exception-type 指定出现什么错误交由错误页面