同时使用servlet和struts的拦截方法:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- android请求的拦截 -->
<servlet>
<servlet-name>android_login</servlet-name>
<servlet-class>com.xunfang.em_mallServer.servlet.MyServlet</servlet-class>
<init-param>
<param-name>code</param-name>
<param-value>GBK</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>android_login</servlet-name>
<url-pattern>/user</url-pattern>
</servlet-mapping>
<!-- ======================================== -->
<filter>
<filter-name>redisp</filter-name>
<filter-class>com.xunfang.em_mallServer.servlet.ReDispatcherFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>redisp</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
<!-- struts配置的拦截 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<!-- 初始界面 -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>second</servlet-name>
<servlet-class>com.xunfang.em_mallServer.servlet.SearchServlet</servlet-class>
<init-param>
<param-name>code</param-name>
<param-value>GBK</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>second</servlet-name>
<url-pattern>/goods</url-pattern>
</servlet-mapping>
</web-app>
然后重写FilterDispatcher类:
package com.xunfang.em_mallServer.servlet;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import com.xunfang.ecshop.entity.User;
import com.xunfang.em_mallServer.action.LoginAction;
import com.xunfang.em_mallServer.util.Constant;
public class ReDispatcherFilter implements Filter {
private int flag;
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
boolean isIE = false;
HttpServletRequest request = (HttpServletRequest) req;
String target = request.getRequestURI();
target = target.lastIndexOf("?") > 0 ? target.substring(target
.lastIndexOf("/") + 1, target.lastIndexOf("?")
- target.lastIndexOf("/")) : target.substring(target
.lastIndexOf("/") + 1);
System.out.println(target);
System.out.println("111111111111----------->");
try {
// 输入
try {
InputStream inputStream = request.getInputStream();
ObjectInputStream objectInputStream = new ObjectInputStream(
new BufferedInputStream(inputStream));
Object obj = objectInputStream.readObject();
objectInputStream.close();
System.out.println("接收到对象" + obj + "");
((User) obj).toString();
// 获取用户名密码与数据库匹配
String name = ((User) obj).getName();
String pwd = ((User) obj).getPassword();
if (LoginAction.loginAndroid(name, pwd)) {
System.out.println("login success :)");
flag = Constant.F_LOGIN_SUCCESS;
} else {
flag = Constant.F_LOGIN_FAIL;
System.out.println("login fail :(");
}
} catch (Exception e) {
System.out.println("请求异常--->" + e);
isIE = true;
}
if (!isIE) {
// 输出
ServletOutputStream outputStream = resp.getOutputStream();
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(
outputStream);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(
bufferedOutputStream);
User m = new User();
switch (flag) {
case 1:
m.setReturn_flag(1);
m.setNickname("马丽苏");
break;
case 2:
m.setReturn_flag(3);
break;
case 3:
m.setReturn_flag(5);
break;
case 4:
m.setReturn_flag(7);
break;
}
objectOutputStream.writeObject(m);
objectOutputStream.close();
} else {
resp.setContentType("text/html;charset=gbk");
PrintWriter out = resp.getWriter();
out
.print("<P align=center><font size=3 color=red>网络请求异常bbbb</font></p>");
out.flush();
out.close();
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("flag异常--->" + e);
}
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}