Всем привет!
Пытаюсь передать JSON дата через Postman на сервак. Происходит следующее.
При запуске самого веб сервака томкат инициализирует фильтер.
При запросе в фильтре выводится doFilter, что происходит с destroy почему не вызывается?
Класс регистер: В консоль принт не выводится, тоисть программа не запустила этот класс, почему ?
Следовательно немогу передать данные на MySql сервер, если кто может обьяснить сам процесс буду признателен!
Пример регистра, нету вывода в консоль.
@Path("/register")
public class Register extends HttpServlet{
private static final long serialVersionUID = 1068653210561068853L;
Connection con;
@POST
@Consumes({MediaType.APPLICATION_JSON})
public void Registering(@Valid User user){
ConnectionPool con_pool = ConnectionPool.con_instance;
String register = "INSERT INTO users(nickname,first_name,last_name,password,type,email)values(?,?,?,?,?,?)";
PreparedStatement pre;
try {
pre = con.prepareStatement(register);
pre.setString(1,user.getNickName());
pre.setString(2,user.getFirstName());
pre.setString(3,user.getLastName());
pre.setString(4,user.getPassword());
pre.setString(5,user.getType());
pre.setObject(6,user.getEmail());
pre.execute();
**System.out.println("In the register method");**
}catch(com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException e){
throw new DuplicateUser("Such user already exists in database");
}catch (SQLException e1) {
throw new DataBaseError("You have some problems that need to be fixed with your database..");
}
finally{
try {
con_pool.returnConnection(con);
} catch (CouponSystemException e1) {
throw new DataBaseError("You have some problems that need to be fixed with your database..");
}
try {
con.close();
} catch (SQLException e) {
throw new DataBaseError("You have some problems that need to be fixed with your database..");
}
}
}
}
Пример фильтра, вывод только doFilter и init при запуске сервера.
public class RegisterFilter implements Filter{
@Override
public void destroy() {
System.out.println("In the destroy method");
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse)res;
httpResponse.setHeader("Access-Control-Allow-Origin", "http://localhost");
httpResponse.setHeader("Access-Control-Allow-Methods", "POST");
httpResponse.setHeader("Access-Control-Max-Age", "86400");
httpResponse.setHeader("Content-Language", "en-US");
httpResponse.setContentType("application/json;charset=utf-8");
System.out.println("In the do filter method");
}
@Override
public void init(FilterConfig config) throws ServletException {
System.out.println("In the init method");
}
Пример выводов в консоль:
<servlet>
<servlet-name>Register</servlet-name>
<servlet-class>coupon.register.Register</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Register</servlet-name>
<url-pattern>/register/posting</url-pattern>
</servlet-mapping>
<!-- <filter>
<filter-name>Register</filter-name>
<filter-class>coupon.filters.RegisterFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Register</filter-name>
<url-pattern>/register/posting</url-pattern>
</filter-mapping>
-->
<security-constraint>
<web-resource-collection>
<web-resource-name>RegisterPosting</web-resource-name>
<url-pattern>/register/posting</url-pattern>
<http-method>POST</http-method>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!-- Registration -->
<session-config>
<session-timeout>30</session-timeout>
<cookie-config>
<name>SESSIONID</name>
</cookie-config>
</session-config>
Решение!
@GET
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Post calling!
}