Jestem na etapie nauki Springa. Uczę się z książki "Spring mvc przewodnik dla początkujących" i przerabiając przykład z uzywania znaczników Spring Security natknąłem się na problem i nie mam kompletnie pojęcia co robie nie tak. Zarówno w login.jsp jak i addProducts.jsp wykrywa mi błąd podczas użycia mapowania "/j_spring_security_check", a w momenie gdy próbuje się zalogować wyrzuca mi "HTTP Status 404 – Not Found". Byłby w stanie mi ktoś powiedzieć co jest przyczyną błędu? Przejrzałem wiele podobnych problemów, ale nie byłem w stanie zrozumieć jak zastosować poszczególne wskazówki umnie :x
security-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<security:http auto-config="true">
<security:intercept-url pattern="/products/add" access="ROLE_ADMIN" />
<security:form-login login-page="/login"
default-target-url="/products/add"
authentication-failure-url="/loginFailed"
username-parameter="j_username"
password-parameter="j_password"/>
<security:logout logout-success-url="/logout" />
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<security:user name="Admin" password="Admin123" authorities="ROLE_ADMIN" />
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
</beans>
addProduct.jsp
<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
<title>Produkty</title>
</head>
<body>
<section>
<div class="jumbotron">
<div class="container">
<h1>Produkty</h1>
<p>Dodaj produkty</p>
</div>
</div>
</section>
<div class="container">
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Zaloguj się</h3>
</div>
<div class="panel-body">
<c:if test="${not empty error}">
<div class="alert alert-danger">
<spring:message code="AbstractUserDetailsAuthenticationProvider.badCredentials"/><br/>
</div>
</c:if>
<form action="<c:url value="/j_spring_security_check"></c:url>" method="post" role="form">
<fieldset>
<div class="form-group">
<input class="form-control" placeholder="Nazwa użytkownika" name='j_username'
type="text">
</div>
<div class="form-group">
<input class="form-control" placeholder="Hasło" name='j_password' type="password"
value="">
</div>
<input class="btn btn-lg btn-success btn-block" type="submit" value="Zaloguj się">
</fieldset>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
login.jsp
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
<title>Produkty</title>
</head>
<body>
<section>
<div class="jumbotron">
<div class="container">
<h1>Produkty</h1>
<p>Dodaj produkty</p>
</div>
<c:url value="/j_spring_security_logout" var="/login"/>
<a href="${login}">Log Out</a>
</div>
</section>
<section class="container">
<form:form modelAttribute="newProduct" class="form-horizontal">
<fieldset>
<legend>Dodaj nowy produkt</legend>
<div class="form-group">
<label class="control-label col-lg-2 col-lg-2" for="productId">
<spring:message code="addProduct.form.productId.label"/>
</label>
<div class="col-lg-10">
<form:input id="productId" path="productId" type="text" class="form:input-large"/>
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-2 col-lg-2" for="name">Nazwa</label>
<div class="col-lg-10">
<form:input id="name" path="name" type="text" class="form:input-large"/>
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-2 col-lg-2" for="unitPrice">Cena</label>
<div class="col-lg-10">
<form:input id="unitPrice" path="unitPrice" type="text" class="form:input-large"/>
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-2 col-lg-2" for="manufacturer">Producent</label>
<div class="col-lg-10">
<form:input id="manufacturer" path="manufacturer" type="text" class="form:input-large"/>
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-2 col-lg-2" for="category">Kategoria</label>
<div class="col-lg-10">
<form:input id="category" path="category" type="text" class="form:input-large"/>
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-2 col-lg-2" for="unitsInStock">Ilość w magazynie</label>
<div class="col-lg-10">
<form:input id="unitsInStock" path="unitsInStock" type="text" class="form:input-large"/>
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-2" for="description">Opis</label>
<div class="col-lg-10">
<form:textarea id="description" path="description" rows="2"/>
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-2" for="condition">Stan</label>
<div class="col-lg-10">
<form:radiobutton path="condition" value="New"/>Nowy
<form:radiobutton path="condition" value="Old"/>Używany
<form:radiobutton path="condition" value="Refurbished"/>Odnowiony
</div>
</div>
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<input type="submit" id="btnAdd" class="btn btn-primary" value="Dodaj"/>
</div>
</div>
</fieldset>
</form:form>
</section>
</body>
</html>
<web-app version="3.0" 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_3_0.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/webcontext/security-context.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/webcontext/DispatcherServlet-context.xml
</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
package com.wojo.webstore.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class LoginController {
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String login() {
return "login";
}
@RequestMapping(value = "/loginFailed", method = RequestMethod.GET)
public String loginerror(Model model) {
model.addAttribute("error", "true");
return "login";
}
@RequestMapping(value = "/logout", method = RequestMethod.GET)
public String logout(Model model) {
return "login";
}
}
- screenshot-20180125230024.png (22 KB) - ściągnięć: 108
- screenshot-20180125230016.png (22 KB) - ściągnięć: 117