1、servlet是什么?
servlet是一个连通前、后端的java类,只会在第一次加载时调用init()方法被初始化,后来不再初始化。第一次被调用后会进入休眠状态,等待再次被调用或被销毁(destroy()方法)。
2、访问doGet的四种方式?
- 直接访问servlet
- 地址栏带参数访问servlet
- 表单提交方式设置为get
- 网页中的跳转超链接
3、表单中action的两种写法?
假设有一个建好的项目名为Demo目录下有一个login(一个servlet)
- 相对路径:<inform action="login"></inform> 表示访问项目路径下的login,与<inform action="/Demo/login"></inform>效果一致,即地址栏会显示http://localhost:8080/Demo/login
- 绝对路径:<inform action="/login"></inform> 表示直接在本机tomcat直接访问login这个servlet,因为没有先找到项目Demo,所以自然找不到login这个类,会出现404异常。
4、访问doPost的方法?
- 表单提交方式设置为post
- ajax提交时指定用post
5、提交数据,返回数据时的乱码问题?
普通表单提交:
- 对于servlet返回值
- response.setCharacterEncoding(“UTF-8”);
response.setContentType(“text/html;charset=UTF-8”); - 对于表单提交值
- request.setCharacterEncoding(“UTF-8”);
- 对于doGet方式提交:
字节转码:先把中文字符串转换成字节,再把字符以制定编码组合,即
-String name=request.getParameter(“username”);
-String changeName=new String(name.getBytes(“iso-8859-1”),”UTF-8”);- 或者在server.xml配置文件中 - <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding='UTF-8'/>加入URIEncoding='UTF-8'
- filter
见下
6、html5乱码问题?
在页面添加<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7、过滤器:filter
什么是filter?
filter也称之为过滤器,开发人员通过Filter技术,对web服务器管理的所有web资源:例如JSP,Servlet,静态图片文件或静态html文件等进行过滤,从而实现一些特殊的功能。例如,实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行过滤。简单的说,就是可以实现web容器对某资源的访问之前截获进行处理,还可以在资源向web容器响应前进行截获处理。filter作用?
在这里就是对匹配的servlet进行一些信息的加工或者过滤。
新建过滤器
新建java类,实现Filter接口
重写接口方法package com.wyz.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class FilterDemo implements Filter{ private FilterConfig config; public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //获取filter初始化的参数值 String encoding=config.getInitParameter("encoding"); if(null!=encoding&&!encoding.equals("")){ request.setCharacterEncoding(encoding); response.setCharacterEncoding(encoding); response.setContentType("text/html;charset="+encoding); } System.out.println("我们进入了字符编码转换的过滤器"); //把请求和响应继续带给下一个filter,如果没有就执行servlet //通俗说,比如一个男人去相亲,他先满足第一个过滤器28岁以下,然后又满足第二个过滤器长得帅...当所有过滤器全部满足,才可以交往女方 //执行filter顺序是按照web.xml上下文顺序,总是先执行filter后servlet chain.doFilter(request, response); } public void init(FilterConfig config) throws ServletException { this.config=config; } }
在web.xml配置文件中注册过滤器
<!--Filter配置格式 --> <filter> <filter-name>filter</filter-name> <filter-class>com.wyz.filter.FilterDemo</filter-class> <!-- 配置初始化参数 --> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>filter</filter-name> <!-- 表示对所有的servlet有效果,/LoginServlet表示只对LoginServlet起作用 --> <url-pattern>/*</url-pattern> </filter-mapping>