Не удалось запустить соединитель Tomcat, настроенный на прослушивание через порт 8080.Возможно, порт уже используется, или разъем неправильно настроен - PullRequest
1 голос
/ 14 марта 2019

Класс DAO

package com.dao;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.bin.Student;
import com.repository.StudentRepository;

@Service
public class StudentDAO {
    @Autowired
    StudentRepository studentRepository;

    /*to save an employee*/

    public Student save(Student std) {
        return studentRepository.save(std);
    }


    /* search all employees*/

    public List<Student> findAll(){
        return studentRepository.findAll();
    }


    /*get an employee by id*/
    public Student findOne(Integer id){
        return studentRepository.getOne(id);

    }


    /*delete an employee*/

    public void delete(Student std) {
        studentRepository.delete(std);
    }


}

Контроллер

package com.controller;

import java.util.ArrayList;
import java.util.List;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import com.bin.Student;
import com.dao.StudentDAO;

@Controller

public class StudentController {

    @Autowired
    private StudentDAO studentDao;

    @RequestMapping(value="/enroll",method=RequestMethod.GET)
    public String newRegistration(ModelMap model) {
        Student student = new Student();
        model.addAttribute("student",student);
        return "enroll";
    }

    @RequestMapping(value="/save",method=RequestMethod.POST)
    public String saveRegistration(@Valid Student student,BindingResult result,ModelMap model,RedirectAttributes redirectAttributes) {

        if(result.hasErrors()) {
            return "enroll";
        }

        studentDao.save(student);

        return "redirect:/viewstudents";
    }


    @RequestMapping(value="/viewstudents")
    public ModelAndView getAll() {

        List<Student> list=studentDao.findAll();
        return new ModelAndView("viewstudents","list",list);
    }


    @RequestMapping(value="/editstudent/{id}")
    public String edit (@PathVariable int id,ModelMap model) {

        Student student=studentDao.findOne(id);
        model.addAttribute("student",student);
        return "editstudent";
    }

    @RequestMapping(value="/editsave",method=RequestMethod.POST)
    public ModelAndView editsave(@ModelAttribute("student") Student p) {

        Student student=studentDao.findOne(p.getId());

        student.setFirstName(p.getFirstName());
        student.setLastName(p.getLastName());
        student.setCountry(p.getCountry());
        student.setEmail(p.getEmail());
        student.setSection(p.getSection());
        student.setSex(p.getSex());

        studentDao.save(student);
        return new ModelAndView("redirect:/viewstudents");
    }

    @RequestMapping(value="/deletestudent/{id}",method=RequestMethod.GET)
    public ModelAndView delete(@PathVariable int id) {
        Student student=studentDao.findOne(id);
        studentDao.delete(student);
        return new ModelAndView("redirect:/viewstudents");
    }



    @ModelAttribute("sections")
    public List<String> intializeSections(){
        List<String> sections = new ArrayList<String>();
        sections.add("Graduate");
        sections.add("Post Graduate");
        sections.add("Reasearch");
        return sections;
    }


    /*
     * Method used to populate the country list in view. Note that here you can
     * call external systems to provide real data.
     */
    @ModelAttribute("countries")
    public List<String> initializeCountries() {

        List<String> countries = new ArrayList<String>();
        countries.add("INDIA");
        countries.add("USA");
        countries.add("CANADA");
        countries.add("FRANCE");
        countries.add("GERMANY");
        countries.add("ITALY");
        countries.add("OTHER");
        return countries;
    }

}

Класс приложения

package com.application;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;


@SpringBootApplication
@EnableJpaAuditing
public class StudentApplication {

    public static void main(String[] args) {
        SpringApplication.run(StudentApplication.class, args);

    }

}

application.prprties

spring.mvc.view.prefix : /WEB-INF/views/
spring.mvc.view.suffix: .jsp

## Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
spring.datasource.url = jdbc:mysql://localhost:3306/studentdb?allowPublicKeyRetrieval=true&useSSL=false
spring.datasource.username = root
spring.datasource.password = root


## Hibernate Properties
# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update

Репозиторий

package com.repository;

import org.springframework.data.jpa.repository.JpaRepository;

import com.bin.Student;

public interface StudentRepository extends JpaRepository<Student, Integer> {

}

Это мой бэкэнд приложения.Я много пытался решить эту проблему.пожалуйста, попробуйте помочь.Мне нужно решить эту ошибку, чтобы развернуть проект.это будет реальная помощь

body {
    background-color: lightblue;
}

h1 {
    color: navy;
    margin-left: 20px;
}

table {
    width:100%;
   
}
table, th, td {
    
    border-collapse: collapse;
    
}
th, td {
    padding: 5px;
    text-align: left;
}
table#t01 tr:nth-child(even) {
    background-color: #eee;
   
}
table#t01 tr:nth-child(odd) {
   background-color:#fff;
   
}
table#t01 th {
    background-color: blue;
    color: white;
    text-align: center;
}


table#t02 td {
    
    vertical-align: inherit;
    text-align: center;
}
table#t02 tr:nth-child(even) {
    background-color: #eee;
    
   
}
table#t02 tr:nth-child(odd) {
   background-color:#fff;
   
}
table#t02 th {
    
    background-color: lightblue;
    text-align: center;
}


h1 {
    text-align: center;
    display: block;
    font-size: 2em;
    margin-top: 0.67em;
    margin-bottom: 0.67em;
    margin-left: 0;
    margin-right: 0;
    font-weight: bold;
    color:blue;
}
h2 {
    text-align: left;
    display: block;
    font-size: 1em;
    margin-top: 0.67em;
    margin-bottom: 0.67em;
    margin-left: 0;
    margin-right: 0;
    font-weight: bold;
    color:#008040;
}
a {
   
    font-weight: bold;
    color:blue;
}

body {
    background-color: lightblue;
}

h1 {
    color: navy;
    margin-left: 20px;
}

table {
    width:100%;
   
}
table, th, td {
    
    border-collapse: collapse;
    
}
th, td {
    padding: 5px;
    text-align: left;
}
table#t01 tr:nth-child(even) {
    background-color: #eee;
   
}
table#t01 tr:nth-child(odd) {
   background-color:#fff;
   
}
table#t01 th {
    background-color: blue;
    color: white;
    text-align: center;
}


table#t02 td {
    
    vertical-align: inherit;
    text-align: center;
}
table#t02 tr:nth-child(even) {
    background-color: #eee;
    
   
}
table#t02 tr:nth-child(odd) {
   background-color:#fff;
   
}
table#t02 th {
    
    background-color: lightblue;
    text-align: center;
}


h1 {
    text-align: center;
    display: block;
    font-size: 2em;
    margin-top: 0.67em;
    margin-bottom: 0.67em;
    margin-left: 0;
    margin-right: 0;
    font-weight: bold;
    color:blue;
}
h2 {
    text-align: left;
    display: block;
    font-size: 1em;
    margin-top: 0.67em;
    margin-bottom: 0.67em;
    margin-left: 0;
    margin-right: 0;
    font-weight: bold;
    color:#008040;
}
a {
   
    font-weight: bold;
    color:blue;
}
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page isELIgnored="false" %>

<html>

<head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
	<title>Student Enrollment Form</title>
	<link href="css/bootstrap.css"      rel="stylesheet">
	<link href="css/custom.css"      rel="stylesheet">
	<link href="css/main.css"      rel="stylesheet">
</head>

<body>

 	<div class="form-container">
 	
 	<h1>Student Enrollment Form</h1>
 	
	<form:form method="POST" modelAttribute="student" commandName="student" class="form-horizontal" action="save">
	
<div class="row">
			<div class="form-group col-md-12">
				<label class="col-md-3 control-lable" for="firstName">First Name</label>
				<div class="col-md-7">
					<form:input type="text" path="firstName" id="firstName" class="form-control input-sm"/>
					<div class="has-error">
						<form:errors path="firstName" class="help-inline"/>
					</div>
				</div>
			</div>
		</div>

		<div class="row">
			<div class="form-group col-md-12">
				<label class="col-md-3 control-lable" for="lastName">Last Name</label>
				<div class="col-md-7">
					<form:input type="text" path="lastName" id="lastName" class="form-control input-sm"/>
					<div class="has-error">
						<form:errors path="lastName" class="help-inline"/>
					</div>
				</div>
			</div>
		</div>
		

		

		<div class="row">
			<div class="form-group col-md-12">
				<label class="col-md-3 control-lable" for="email">Email</label>
				<div class="col-md-7">
					<form:input type="text" path="email" id="email" class="form-control input-sm"/>
					<div class="has-error">
						<form:errors path="email" class="help-inline"/>
					</div>
				</div>
			</div>
		</div>


		

		<div class="row">
			<div class="form-group col-md-12">
				<label class="col-md-3 control-lable" for="country">Country</label>
				<div class="col-md-7">
					<form:select path="country" id="country" class="form-control input-sm">
				        <form:option value="">Select Country</form:option>
			    	    <form:options items="${countries}" />
				    </form:select>
					<div class="has-error">
						<form:errors path="country" class="help-inline"/>
					</div>
				</div>
			</div>
		</div>
		
<div class="row">
			<div class="form-group col-md-12">
				<label class="col-md-3 control-lable" for="sex">Sex</label>
				<div class="col-md-7" class="form-control input-sm">
					<form:radiobutton path="sex" value="M" />Male 
	    			<form:radiobutton path="sex" value="F" />Female
					<div class="has-error">
						<form:errors path="sex" class="help-inline"/>
					</div>
				</div>
			</div>
		</div>
		
		<div class="row">
			<div class="form-group col-md-12">
				<label class="col-md-3 control-lable" for="section">Section</label>
				<div class="col-md-7" class="form-control input-sm">
					<form:radiobuttons path="section" items="${sections}" />
					<div class="has-error">
						<form:errors path="section" class="help-inline"/>
					</div>
				</div>
			</div>
		</div>
		
		

		<div class="row">
			<div class="form-actions floatRight">
				<input type="submit" value="Register" class="btn btn-primary btn-sm">
			</div>
		</div>
	</form:form>
	</div>
</body>
</html>

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page isELIgnored="false" %>

<html>

<head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
	<link href="/css/bootstrap.css"      rel="stylesheet">
	<link href="/css/custom.css"      rel="stylesheet">
	<link href="/css/main.css"      rel="stylesheet">
</head>

<body>

 	<div class="form-container">
 	
 	<h1>Edit Student Details</h1>
 	
	<form:form method="POST" modelAttribute="student" commandName="student" class="form-horizontal" action="/editsave">

<div class="row">
			<div class="form-group col-md-12">
				<label class="col-md-3 control-lable" for="id"></label>
				<div class="col-md-7">
					<form:hidden path="id"  class="form-control input-sm"/>
					<div class="has-error">
						
					</div>
				</div>
			</div>
		</div>
		<div class="row">
			<div class="form-group col-md-12">
				<label class="col-md-3 control-lable" for="firstName">First Name</label>
				<div class="col-md-7">
					<form:input type="text" path="firstName" id="firstName" class="form-control input-sm"/>
					<div class="has-error">
						<form:errors path="firstName" class="help-inline"/>
					</div>
				</div>
			</div>
		</div>

		<div class="row">
			<div class="form-group col-md-12">
				<label class="col-md-3 control-lable" for="lastName">Last Name</label>
				<div class="col-md-7">
					<form:input type="text" path="lastName" id="lastName" class="form-control input-sm"/>
					<div class="has-error">
						<form:errors path="lastName" class="help-inline"/>
					</div>
				</div>
			</div>
		</div>

		<div class="row">
			<div class="form-group col-md-12">
				<label class="col-md-3 control-lable" for="sex">Sex</label>
				<div class="col-md-7" class="form-control input-sm">
					<form:radiobutton path="sex" value="M" />Male 
	    			<form:radiobutton path="sex" value="F" />Female
					<div class="has-error">
						<form:errors path="sex" class="help-inline"/>
					</div>
				</div>
			</div>
		</div>

		

		<div class="row">
			<div class="form-group col-md-12">
				<label class="col-md-3 control-lable" for="email">Email</label>
				<div class="col-md-7">
					<form:input type="text" path="email" id="email" class="form-control input-sm"/>
					<div class="has-error">
						<form:errors path="email" class="help-inline"/>
					</div>
				</div>
			</div>
		</div>


		<div class="row">
			<div class="form-group col-md-12">
				<label class="col-md-3 control-lable" for="section">Section</label>
				<div class="col-md-7" class="form-control input-sm">
					<form:radiobuttons path="section" items="${sections}" />
					<div class="has-error">
						<form:errors path="section" class="help-inline"/>
					</div>
				</div>
			</div>
		</div>


		<div class="row">
			<div class="form-group col-md-12">
				<label class="col-md-3 control-lable" for="country">Country</label>
				<div class="col-md-7">
					<form:select path="country" id="country" class="form-control input-sm">
				        <form:option value="">Select Country</form:option>
			    	    <form:options items="${countries}" />
				    </form:select>
					<div class="has-error">
						<form:errors path="country" class="help-inline"/>
					</div>
				</div>
			</div>
		</div>

	
		<div class="row">
			<div class="form-actions floatRight">
				<input type="submit" value="Edit" class="btn btn-primary btn-sm">
			</div>
		</div>
	</form:form>
	</div>
</body>
</html>

<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>    
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
	<link href="/css/bootstrap.css"      rel="stylesheet">
	<link href="/css/custom.css"      rel="stylesheet">
	<link href="/css/main.css"      rel="stylesheet">
</head>
<body>
<h1 align="center">Students List</h1>
<table id="t02"  cellpadding="2">
<tr>
<th>
<a  href="/enroll"><h2>Home Page:Enroll New Student</h2></a>

</th>

<th>

<a  align ="right" href="/delete"><h2>Delete All Students</h2></a>
</th>
</tr>
</table>
<table >


</table>
   
<form:form  class="form-horizontal" >
<table id="t01" border="2" width="70%" cellpadding="2">
<tr><th>Id</th><th>First Name</th><th>Last Name</th>
<th>Sex</th><th>Date Modified</th>
<th>Email</th><th>Section</th><th>Country</th>
<th>Edit</th><th>Delete</th></tr>  

   <c:forEach var="student" items="${list}"> 
   <tr>  
   <td>${student.id}</td>  
   <td>${student.firstName}</td> 
   <td>${student.lastName}</td>  
   <td>${student.sex}</td> 
   <td>${student.createdAt}</td>  
   <td>${student.email}</td> 
   <td>${student.section}</td> 
   <td>${student.country}</td>  
   
   
   <td><a href="/editstudent/${student.id}">Edit</a></td>  
   <td><a href="/deletestudent/${student.id}">Delete</a></td>  
   </tr>  
   </c:forEach> 
   
   
   </table>  
   <br/>
   
  
   </form:form>
</body>
</html>

Это весь мой проект.Когда я пытался развернуть это в Интернете, он показывает 404 не найден, а в консоли он показывает

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2019-03-14 19:16:13.739 ERROR 4368 --- [  restartedMain] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'studentController': Unsatisfied dependency expressed through field 'studentDao'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.dao.StudentDAO' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Попробуйте добавить аннотацию @Repository в интерфейсе StudentRepository, @EnableJpaRepositories("com.repository") в классе StudentApplication и @ComponentScan("com") в классе StudentApplication.

Spring не сможетautowire StudentRepository и StudentDAO, поскольку класс StudentApplication и другие классы находятся в разных пакетах, и, следовательно, проблема.

0 голосов
/ 14 марта 2019

SpringBoot будет автоматически сканировать репозитории автоматически в пакетах, которые являются подпакетами пакета, в котором находится аннотированный класс @SpringBootApplication.

Так что в вашем случае, поскольку он находится в com.application, вы должны поместить репозитории ниже этого. Возможно com.application.repository. В противном случае вам нужно возиться с дополнительными аннотациями, чтобы включить сканирование компонентов в других пакетах, как кто-то другой предложил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...