public void addInterceptors(InterceptorRegistry registry){ registry.addInterceptor(new MVCInterceptor()) .addPathPatterns("/**") .excludePathPatterns("/show_login") .excludePathPatterns("/check_login_mybatis") .excludePathPatterns("/no_privilege") .excludePathPatterns("/register") .excludePathPatterns("/js/*") .excludePathPatterns("/css/*") .excludePathPatterns("/image/*") .excludePathPatterns("/css/img/*") .excludePathPatterns("/error") .excludePathPatterns("/css/font/*") .excludePathPatterns("/*.js") .excludePathPatterns("/*.html") ; }
时间: 2023-06-18 18:04:24 浏览: 55
这段代码是在Spring MVC框架中注册拦截器,其中添加了一个MVCInterceptor拦截器,该拦截器会拦截所有的请求("/**"),但排除了一些特定的路径,如登录、注册、静态资源等。
拦截器可以在请求到达Controller之前或之后对请求进行处理,用于实现一些通用的功能,例如身份验证、日志记录等。在Spring MVC中,可以通过实现HandlerInterceptor接口来自定义拦截器,并通过InterceptorRegistry进行注册。在注册时,可以指定拦截的路径和排除的路径,以及拦截器的优先级等。
相关问题
完成登录拦截器程序,即thymeleaf页面showtiom.html显示出服务器的时间,当在浏览器地址栏上写入”http://localhost:8080/show“或”http://localhost:8080/time“,运行的是showtiom.html
首先,需要创建一个登录拦截器,用来检查用户是否已经登录。可以创建一个类,继承自HandlerInterceptorAdapter,并实现preHandle方法。在该方法中,可以获取session对象,检查其中是否已经保存了用户信息,如果没有,则重定向到登录页面。
```
public class LoginInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
if (session.getAttribute("user") == null) {
response.sendRedirect("/login");
return false;
}
return true;
}
}
```
接着,在Spring Boot的配置类中,将该拦截器加入到拦截器链中。
```
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/show", "/time");
}
}
```
最后,在控制器中,处理/show和/time的请求,返回showtime.html页面,并在该页面中显示服务器时间。
```
@Controller
public class ShowTimeController {
@RequestMapping(value = {"/show", "/time"})
public String showTime(Model model) {
Date now = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String formattedDate = dateFormat.format(now);
model.addAttribute("serverTime", formattedDate);
return "showtime";
}
}
```
在showtime.html页面中,可以使用Thymeleaf模板语言来显示服务器时间。
```
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Show Time</title>
</head>
<body>
<h1>Server Time: <span th:text="${serverTime}"></span></h1>
</body>
</html>
```
现在,在浏览器中访问http://localhost:8080/show或http://localhost:8080/time时,如果用户未登录,则会被重定向到登录页面。如果已经登录,则会显示服务器时间。
使用Spring框架,写一个完整的项目
好的,我会给你一个简单的Spring项目示例,包括基本的Spring MVC和Spring Data JPA。
1. 创建一个Maven项目,添加以下依赖:
```xml
<dependencies>
<!-- Spring Core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<!-- Spring Web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<!-- Spring MVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<!-- Spring Data JPA -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>2.3.4.RELEASE</version>
</dependency>
<!-- H2 Database Engine -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
</dependency>
</dependencies>
```
2. 创建一个实体类,例如:
```java
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "age")
private Integer age;
// constructors, getters, setters
}
```
3. 创建一个JPA仓库接口,例如:
```java
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
```
4. 创建一个控制器类,例如:
```java
@Controller
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping("/users")
public String getAllUsers(Model model) {
List<User> users = userRepository.findAll();
model.addAttribute("users", users);
return "users";
}
@GetMapping("/users/add")
public String addUserForm(Model model) {
model.addAttribute("user", new User());
return "addUserForm";
}
@PostMapping("/users/add")
public String addUser(@ModelAttribute User user) {
userRepository.save(user);
return "redirect:/users";
}
}
```
5. 创建一个视图文件,例如:
```html
<!-- users.html -->
<!DOCTYPE html>
<html>
<head>
<title>Users</title>
</head>
<body>
<h1>Users</h1>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Age</th>
</tr>
</thead>
<tbody>
<tr th:each="user : ${users}">
<td th:text="${user.id}"></td>
<td th:text="${user.name}"></td>
<td th:text="${user.age}"></td>
</tr>
</tbody>
</table>
<a href="/users/add">Add User</a>
</body>
</html>
<!-- addUserForm.html -->
<!DOCTYPE html>
<html>
<head>
<title>Add User</title>
</head>
<body>
<h1>Add User</h1>
<form method="post" th:action="@{/users/add}">
<label for="name">Name:</label>
<input type="text" id="name" name="name" /><br />
<label for="age">Age:</label>
<input type="number" id="age" name="age" /><br />
<input type="submit" value="Add" />
</form>
</body>
</html>
```
6. 创建一个Spring配置类,例如:
```java
@Configuration
@EnableWebMvc
@EnableJpaRepositories(basePackages = "com.example.demo.repository")
@EntityScan(basePackages = "com.example.demo.entity")
public class AppConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
}
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.build();
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean();
emf.setDataSource(dataSource());
emf.setPackagesToScan("com.example.demo.entity");
emf.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
emf.setJpaProperties(jpaProperties());
return emf;
}
private Properties jpaProperties() {
Properties props = new Properties();
props.setProperty("hibernate.hbm2ddl.auto", "create-drop");
props.setProperty("hibernate.show_sql", "true");
props.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
return props;
}
@Bean
public JpaTransactionManager transactionManager() {
JpaTransactionManager tm = new JpaTransactionManager();
tm.setEntityManagerFactory(entityManagerFactory().getObject());
return tm;
}
}
```
7. 运行项目,在浏览器中访问http://localhost:8080/users即可查看所有用户,并通过http://localhost:8080/users/add添加新用户。
这是一个非常简单的Spring项目,实现了基本的增删改查功能。当然,在实际开发中,需要更多的配置和复杂的业务逻辑。