DC00024基于ssm实验室预约管理系统java web项目web教师预约jsp预约管理系统

news2024/11/20 10:33:15

1、项目功能演示

DC00024基于web实验室预约管理系统ssm教室预约实验室预约管理系统java web项目MySQL

2、项目功能描述

基于ssm实验室预约管理系统分为用户和系统管理员两个角色。

2.1 系统管理员

1、系统登录
2、用户管理:修改个人信息、修改个人密码、教师管理、学生管理
3、实验室管理:新增实验室、查看实验室
4、预约信息管理:排班表、高级搜索
5、公告管理:发布公告、删除公告

2.2 教师

1、系统登录
2、用户管理:查看个人信息、修改个人密码
3、预约管理:预约实验室(个人预约、课程预约)、查看预约信息、实验室排期表、高级搜索
4、课程管理:新增课程、课程列表

2.3 学生

1、系统登录
2、用户管理:查看个人信息、修改个人密码
3、预约管理:预约实验室、查看预约信息、实验室排期表、高级搜索

3、项目运行截图

1953a1cc985945aa97ae39d893913307.png6ad355b130d94863835201aae36622fe.pngc7b1e535d93147878d65fc710ea91398.png954dc6190821405ea7e2dfc1bfaa333b.png07e3e0decbb64adfa64801699b30c2bc.png5e63ac1c3d3c4200822c605427cfad72.pngce045ca56ec940c981716765a2c981c7.png869c00c65be043f893a91b8bb1c9e64c.pngc04c212e50b04872993f86434108ca73.png67fb531ab7f2425a9a98495514e34724.pngae45ad7381944524b7ace3d62e915e5f.png53c751dbacd6493695ea30ff4e961ea6.pngba29b6ee2c20465c92427570c7d19ccf.png41b21b2fed694e2bbef82ed8f7c1757b.png130534f944c7416cbc96371945947348.pngf9f19fa750454f7da6d8b69c037b2f5a.png278414e153704cac9bf87f3080a539dc.png 

4、项目核心代码 

4.1 ApplicationContext.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:context="http://www.springframework.org/schema/context" 
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
           				http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
           				http://www.springframework.org/schema/context
           				http://www.springframework.org/schema/context/spring-context-3.2.xsd
           				http://www.springframework.org/schema/aop
           				http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
           				http://www.springframework.org/schema/mvc
           				http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
           				http://www.springframework.org/schema/tx
           				http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">  
  	<context:component-scan base-package="com.lrms.*">
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
	</context:component-scan>  
	
	<!-- 配置数据源,引用数据池c3p0.jar包 -->
	<!-- 通过加载jdbc配置文件使用数据源信息 -->
	<!-- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"  destroy-method="close">  
        <property name="driverClass" value="${jdbc.classname}" />  
        <property name="jdbcUrl" value="${jdbc.url}" />  
        <property name="user" value="${jdbc.user}"/>  
        <property name="password" value="${jdbc.password}"/> 
    </bean> --> 
	
	<!-- 直接定义数据源的信息 -->  
   	 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"  destroy-method="close">  
        <property name="driverClass">  
            <value>com.mysql.jdbc.Driver</value>  
        </property>  
        <property name="jdbcUrl">  
            <value>jdbc:mysql://localhost:3305/lrms?useSSL=false&amp;useUnicode=true&amp;characterEncoding=utf8</value>
        </property>  
        <property name="user">  
            <value>root</value>  
        </property>  
        <property name="password">  
            <value>root</value>
        </property>  
        <property name="maxPoolSize">  
            <value>80</value>  
        </property>  
        <property name="minPoolSize">  
            <value>1</value>  
        </property>  
        <property name="initialPoolSize">  
            <value>1</value>  
        </property>  
        <property name="maxIdleTime">  
            <value>20</value>  
        </property>      
    </bean>  
	
	 
	<!--定义Hibernate的SessionFactory -->  
    <!-- SessionFactory使用的数据源为上面的数据源 -->  
    <!-- 指定了Hibernate的映射文件和配置信息 -->  
    <bean id="sessionFactory"  class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">  
        <property name="dataSource">  
            <ref local="dataSource" />  
        </property>  
        <property name="hibernateProperties">  
            <props>  
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
                <prop key="show_sql">true</prop>  
                <prop key="hibernate.jdbc.batch_size">20</prop>  
            	<prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>
            </props>  
        </property>  
        <property name="packagesToScan" value="*" />          
    </bean>  
    
    <!-- 定义事务管理器(声明式的事务) -->    
     <bean id="transactionManager"  class="org.springframework.orm.hibernate4.HibernateTransactionManager">  
        <property name="sessionFactory" ref="sessionFactory" />  
    </bean> 
    
    <!--  扫描注解
    <tx:annotation-driven/> 就是支持事务注解的(@Transactional) 
    <mvc:annotation-driven> 就是支持mvc注解的
    -->
    <tx:annotation-driven transaction-manager="transactionManager"/>       	
    				
</beans>  

4.2 spring-mvc.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:context="http://www.springframework.org/schema/context" 
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
           				http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
           				http://www.springframework.org/schema/context
           				http://www.springframework.org/schema/context/spring-context-3.2.xsd
           				http://www.springframework.org/schema/aop
           				http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
           				http://www.springframework.org/schema/mvc
           				http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
           				http://www.springframework.org/schema/beans 
           				http://www.springframework.org/schema/beans/spring-beans.xsd ">  
	<!-- 加载Spring的全局配置文件 -->  
    <beans:import resource="ApplicationContext.xml" />  
	
	<!-- 配置静态资源信息    **指resources下的所有目录文件 -->
	<mvc:resources location="/resource/" mapping="/resource/**"/>
	
	<!-- 通过component-scan 让Spring扫描*下的所有的类,让Spring的代码注解生效 --> 
	<!-- 扫描器只扫描到controller -->
	<context:component-scan base-package="com.lrms.*">
		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
	</context:component-scan>
	
	<!-- 配置解析器,默认使用ISO-8859-1字符集,需要设置在 annotation-driven之前,用来修改ContextType中的字符集,设置在annotation-driven之后则无法生效-->
	<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
		<property name="messageConverters">
			<list>
				<ref bean="stringMessageConvert" />
				<ref bean="jacksonMessageConvert" />
			</list>
		</property>
	</bean>
	
	<!-- 启动两个类 DefaultAnnotationHandlerMapping(解析RequestMapping注解,放入map当中)  
				AnnotationMethodHandlerAdapter(适配器来执行自己编写的controller)
	spring3.1之后  被替代为RequestMappingHandlerMapping   RequestMappingHandlerAdapter
	 -->
	<mvc:annotation-driven></mvc:annotation-driven>
	
	<!-- 视图解析器  bean的ID和 DispatcherServlet中的名称一致 -->
	<!-- jsp页面放在 /WEB-INF/目录下-->
	<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix"  value="/jsp/" />
		<property name="suffix" value=".jsp"/>
	</bean>
	
	<!-- 对RequestParam,ResponseBody注解  解析JSON格式数据的转换器  -->
	 <bean id="jacksonMessageConvert" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
	 	<property name="supportedMediaTypes">
	 		<list>
	 			<value>text/html;charset=utf-8</value> <!-- IE FireFox -->
	 			<value>application/json;charset=utf-8</value> <!-- Chrome -->
	 		</list>
	 	</property>
	 </bean>
	
	 <!-- 对RequestParam,ResponseBody注解 解析字符数据的转换器  -->
	 <bean id="stringMessageConvert" class="org.springframework.http.converter.StringHttpMessageConverter">
	 	<property name="supportedMediaTypes">
	 		<list>
	 			<value>text/html;charset=utf-8</value>
	 		</list>
	 	</property>
	 </bean>
	 
	 <!-- 配置Spring文件上传 -->
	 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	 	<property name="defaultEncoding" value="UTF-8"></property>
	 	<property name="maxUploadSize" value="5400000"></property> <!-- 单位字节 1024*1024*10 10MB   是上传文件的大小,单位为字节-->
	 	<property name="maxInMemorySize" value="20480"></property> <!-- 在内存中的最大大小 -->
	 	<property name="resolveLazily" value="true"></property>
	 	<!-- <property name="uploadTempDir" value="fileUpload/temp"></property> -->
	 </bean>
	 
	<mvc:interceptors>
	 	<mvc:interceptor>
	 		<mvc:mapping path="/**"/>
	 		<mvc:exclude-mapping path="/resource/**"/>
	 		<mvc:exclude-mapping path="/**"/>
	 		<bean class="com.lrms.interceptor.LoginInterceptor"></bean>
	 	</mvc:interceptor>
	 </mvc:interceptors>
</beans>  

4.3 预约action

package com.lrms.controller;




import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.lrms.other.ExecResult;
import com.lrms.entity.Course;
import com.lrms.entity.Laboratory;
import com.lrms.entity.Reservation;
import com.lrms.entity.Term;
import com.lrms.entity.lab_reservation;
import com.lrms.entity.lab_schedule;
import com.lrms.entity.user_lab_reservation;
import com.lrms.service.LaboratoryService;
import com.lrms.service.ReserveLaboratoryService;
import com.lrms.service.UserService;

import org.apache.commons.lang.StringUtils;

@Controller
public class ReserveController {
	
	@Autowired
	private ReserveLaboratoryService reserveLaboratoryService;
	@Autowired
	private LaboratoryService laboratoryService;
	@Autowired
	private UserService userService;

	@RequestMapping("getLabReserveById")
	public ModelAndView getLabReserveById(HttpServletRequest request,HttpSession session){
		ModelAndView view=new ModelAndView("reservation");
		int lab_id=Integer.parseInt(request.getParameter("lab_id"));
		int user_id=Integer.parseInt(request.getParameter("user_id"));
		List<lab_reservation> lab_reservation_list=reserveLaboratoryService.getLab_reservations(lab_id);
		view.addObject("lab_reservation_list",lab_reservation_list);
		view.addObject("lab_id", lab_id);
		
		List<Term> termList=userService.getTermList();
		view.addObject("termList",termList);
		
		List<Course> courseList=userService.getCourseList(user_id);
		view.addObject("courseList",courseList);
		
		return view;
	}
	
	@RequestMapping("reserveLab")
	@ResponseBody
	public ExecResult reserveLab(HttpSession session,HttpServletRequest request) throws ParseException{
		ExecResult er=new ExecResult();
		System.out.println("LaboratoryController - addLab");
		Reservation reservation=new Reservation();
		
		if(StringUtils.isNotBlank(request.getParameter("course_id"))){
			reservation.setCourse_id(Integer.parseInt(request.getParameter("course_id")));
		}
		if(StringUtils.isNotBlank(request.getParameter("lab_id"))){
			reservation.setLab_id(Integer.parseInt(request.getParameter("lab_id")));
		}
		if(StringUtils.isNotBlank(request.getParameter("user_id"))){
			reservation.setUser_id(Integer.parseInt(request.getParameter("user_id")));
		}
		if(StringUtils.isNotBlank(request.getParameter("reserve_type"))){
			reservation.setReserve_type(Integer.parseInt(request.getParameter("reserve_type")));
		}
		if(StringUtils.isNotBlank(request.getParameter("time_interval"))){
			reservation.setTime_interval(Integer.parseInt(request.getParameter("time_interval")));
		}
		if(StringUtils.isNotBlank(request.getParameter("weekday"))){
			reservation.setWeekday(Integer.parseInt(request.getParameter("weekday")));
		}
		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
	    Date create_time = sdf.parse(request.getParameter("create_time"));
	    reservation.setCreate_time(create_time);
	    
	    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");  
	    if(Integer.parseInt(request.getParameter("reserve_type"))==1){
		    if(StringUtils.isNotBlank(request.getParameter("person_number"))){
				reservation.setPerson_number(Integer.parseInt(request.getParameter("person_number")));
			}
		    Date reserve_date =(Date)sdf1.parse(request.getParameter("reserve_date"));
		    reservation.setReserve_date(reserve_date);
	    }
	    else{
	    	if(StringUtils.isNotBlank(request.getParameter("person_number2"))){
				reservation.setPerson_number(Integer.parseInt(request.getParameter("person_number2")));
			}
		    Date reserve_date = sdf1.parse(request.getParameter("reserve_date2"));
		    reservation.setReserve_date(reserve_date);
	    }
		
		if(StringUtils.isNotBlank(request.getParameter("modify_time"))){
			Date modify_time = sdf.parse(request.getParameter("modify_time"));
			reservation.setModify_time(modify_time);
		}
		if(StringUtils.isNotBlank(request.getParameter("courseName"))){
			reservation.setCourseName(request.getParameter("courseName"));
		}
		if(StringUtils.isNotBlank(request.getParameter("description"))){
			reservation.setDescription(request.getParameter("description"));
		}
		
		int result=(int)reserveLaboratoryService.reserveLab(reservation);
		if(result>0){
			er.setMsg("恭喜您,预约成功");
			er.setSuccess(true);
		}
		else{
			er.setMsg("实验室可供预约人数不够");
			er.setSuccess(false);
		}
		return er;
	}	
	
	@RequestMapping("schedule_table")
	public ModelAndView schedule_table(HttpServletRequest request,HttpSession session){
		ModelAndView view=new ModelAndView("schedule_table");
		int lab_id=Integer.parseInt(request.getParameter("lab_id"));
		List<lab_schedule> list=reserveLaboratoryService.getSchedule_table(lab_id);
		List<Laboratory> labList=laboratoryService.getAllLab();
		view.addObject("labList",labList);
		view.addObject("list",list);
		return view;
	}
	
	//显示某个用户所有预约信息列表
	@RequestMapping("reservationByUser")
	public ModelAndView reservationByUser(HttpServletRequest request,HttpSession session){
		ModelAndView view=new ModelAndView("manage_reservation_info");
		int user_id=Integer.parseInt(request.getParameter("user_id"));
		int user_type=Integer.parseInt(request.getParameter("user_type"));
		List<lab_reservation> list=reserveLaboratoryService.reservationByUser(user_id);
		view.addObject("list",list);
		
		if(user_type==2){//获得属于该学生所在课堂的预约信息
			List<lab_reservation> list2=reserveLaboratoryService.ReservationTeacherForStudent(user_id);
			view.addObject("list2",list2);
		}
		return view;
	}
	
	/*//显示某个用户某条预约信息,并显示在update_reservation页面中
	@RequestMapping("single_reservation_info")
	public ModelAndView single_reservation_info(HttpServletRequest request,HttpSession session){
		ModelAndView view=new ModelAndView("update_reservation");
		int reserve_id=Integer.parseInt(request.getParameter("reserve_id"));
		lab_reservation lab_reservation=reserveLaboratoryService.single_reservation_info(reserve_id);
		view.addObject("lab_reservation",lab_reservation);
		return view;
	}*/
	
	
	@RequestMapping("deleteReservation")
	@ResponseBody
	public ExecResult deleteReservation(HttpSession session,HttpServletRequest request) {
		ExecResult er=new ExecResult();
		int reserve_id=Integer.parseInt(request.getParameter("reserve_id"));
		int result=(int)reserveLaboratoryService.deleteReservation(reserve_id);
		if(result>0){
			er.setMsg("恭喜您,成功取消预约");
			er.setSuccess(true);
		}
		else{
			er.setMsg("取消预约失败");
			er.setSuccess(false);
		}
		return er;
	}
	
	//课堂预约
	@RequestMapping("reserveLab2")
	@ResponseBody
	public ExecResult reserveLab2(HttpSession session,HttpServletRequest request) throws ParseException{
		ExecResult er=new ExecResult();
		int result=0;
		Reservation reservation=new Reservation();
		if(StringUtils.isNotBlank(request.getParameter("lab_id"))){
			reservation.setLab_id(Integer.parseInt(request.getParameter("lab_id")));
		}
		if(StringUtils.isNotBlank(request.getParameter("user_id"))){
			reservation.setUser_id(Integer.parseInt(request.getParameter("user_id")));
		}
		if(StringUtils.isNotBlank(request.getParameter("reserve_type"))){
			reservation.setReserve_type(Integer.parseInt(request.getParameter("reserve_type")));
		}
		if(StringUtils.isNotBlank(request.getParameter("course_id"))){
			reservation.setCourse_id(Integer.parseInt(request.getParameter("course_id")));
		}
		if(StringUtils.isNotBlank(request.getParameter("time_interval"))){
			reservation.setTime_interval(Integer.parseInt(request.getParameter("time_interval")));
		}
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
	    Date create_time = sdf.parse(request.getParameter("create_time"));
	    reservation.setCreate_time(create_time);
	    if(StringUtils.isNotBlank(request.getParameter("modify_time"))){
			Date modify_time = sdf.parse(request.getParameter("modify_time"));
			reservation.setModify_time(modify_time);
		}
	    if(StringUtils.isNotBlank(request.getParameter("description"))){
			reservation.setDescription(request.getParameter("description"));
	    }
	    
	    if(StringUtils.isNotBlank(request.getParameter("from"))&&StringUtils.isNotBlank(request.getParameter("end"))){
			String from=request.getParameter("from");
			String end=request.getParameter("end");
			int year1=Integer.parseInt(from.substring(0, 4));
			int month1=Integer.parseInt(from.substring(5, 7));
			int day1=Integer.parseInt(from.substring(8, 10));
			int year2=Integer.parseInt(end.substring(0, 4));
			int month2=Integer.parseInt(end.substring(5, 7));
			int day2=Integer.parseInt(end.substring(8, 10));
			if(StringUtils.isNotBlank(request.getParameter("weekday"))){
				int weekday=Integer.parseInt(request.getParameter("weekday"));
				Calendar calendar = new GregorianCalendar();//定义一个日历,变量作为年初
			   	Calendar calendarEnd = new GregorianCalendar();//定义一个日历,变量作为年末
			    calendar.set(Calendar.YEAR, year1);
			   	calendar.set(Calendar.MONTH, month1-1);
			   	calendar.set(Calendar.DAY_OF_MONTH, day1-1);//设置年初的日期为1月1日
			   	calendarEnd.set(Calendar.YEAR, year2);
			   	calendarEnd.set(Calendar.MONTH, month2-1);
			   	calendarEnd.set(Calendar.DAY_OF_MONTH, day2-1);//设置年末的日期为12月31日
			   	   
			   	SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
			   	while(calendar.getTime().getTime()<=calendarEnd.getTime().getTime()){//用日期区间循环
				   	if(calendar.get(Calendar.DAY_OF_WEEK)==weekday+1){//判断如果为weekday时
				   		String date1=sf.format(calendar.getTime());
				   		Date date2=sf.parse(date1);
				   		reservation.setReserve_date(date2);
				   		reservation.setWeekday(weekday);
				   		result=reserveLaboratoryService.reserveLab(reservation);
				   	}
				   	calendar.add(Calendar.DAY_OF_MONTH, 1);//日期+1
			   	}
			}
		}
		if(result>0){
			er.setMsg("恭喜您,预约成功");
			er.setSuccess(true);
		}
		else{
			er.setMsg("实验室可供预约人数不够,请调整预约区间或课堂");
			er.setSuccess(false);
		}
		return er;
	}
	
	//高级搜索,根据用户、预约类别、预约期间等模糊搜索
	@RequestMapping("selectReservation")
	public ModelAndView selectReservation(HttpServletRequest request,HttpSession session){
		ModelAndView view=new ModelAndView("selectReservation");
		int user_type=0; 
		String user_name=null;
		int reserve_type=0;
		String from=null;
		String end=null;
		int user_id=Integer.parseInt(request.getParameter("user_id"));
		if(StringUtils.isNotBlank(request.getParameter("user_type"))){
			user_type=Integer.parseInt(request.getParameter("user_type"));
		}
		if(StringUtils.isNotBlank(request.getParameter("user_name"))){
			user_name=request.getParameter("user_name");
		}
		if(StringUtils.isNotBlank(request.getParameter("reserve_type"))){
			reserve_type=Integer.parseInt(request.getParameter("reserve_type"));
		}
		if(StringUtils.isNotBlank(request.getParameter("from"))){
			from=request.getParameter("from");
		}
		if(StringUtils.isNotBlank(request.getParameter("end"))){
			end=request.getParameter("end");
		}
		System.out.println("bjhed");
		List<user_lab_reservation> list=reserveLaboratoryService.selectReservation(user_id,user_type,user_name,reserve_type,from,end);
		view.addObject("list1",list);
		return view;
	}
	
}

4.4  web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>LRMS</display-name>
  <welcome-file-list>
    <welcome-file>jsp/login.jsp</welcome-file>
  </welcome-file-list>
  
    <!-- 监听spring上下文容器 -->  
    <listener>  
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
    </listener>  
    <listener>
		<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
	</listener>	
	<listener>
		<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
	</listener>
	    
    <!-- 加载spring的xml配置文件到 spring的上下文容器中 -->  
    <context-param>  
        <param-name>contextConfigLocation</param-name>  
        <param-value>classpath:ApplicationContext.xml</param-value>  
    </context-param>   
  
  	<!-- 配置spring先配置一个servlet,然后 加载LRMS的xml文件到Spring的上下文中。
  		然后配置servlet-mapping,servlet-name为刚刚的servlet中的配置的name,然后指定要拦截的url为/
  	-->
  	<servlet>
	  	<servlet-name>LRMS</servlet-name>
	  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	 	<!-- 初始化参数 ,加载LRMS的xml到 spring的上下文容器中 -->  
	  	<init-param>
	  		<param-name>contextConfigLocation</param-name>
	  		<param-value>classpath:spring-mvc.xml</param-value>
	  	</init-param>
  		<load-on-startup>1</load-on-startup>
  	</servlet>
   	<!-- 配置DispatcherServlet所需要拦截的 url -->  
  	<servlet-mapping>
	  	<servlet-name>LRMS</servlet-name>
	  	<url-pattern>/</url-pattern> 	
  	</servlet-mapping>
  
 	<filter>
	  	<filter-name>encodingFilter</filter-name>
	  	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
	 	<init-param>
	  		<param-name>encoding</param-name>
	  		<param-value>UTF-8</param-value>
	  	</init-param>
	  	<init-param>
	  		<param-name>forceEncoding</param-name>
	  		<param-value>true</param-value>
	  	</init-param>
  	</filter>
  	<filter-mapping>
	  	<filter-name>encodingFilter</filter-name>
	  	<url-pattern>/*</url-pattern> 
  	</filter-mapping>
</web-app>

5、项目包含

166b68ef571f4e099f1bae2c84365b65.png

6、项目获取

6.1 方式一

扫描下方名片获取文件。

e794a9d6dc484cd29c77eeeb2814f8cd.pngdd7e3709ebb540d3b24d3b13a5ac911b.png

6.2 方式二

点击此处直接获取项目文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2183468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Forrester 报告揭示 2024 年十大云市场趋势:AI 与边缘计算融合带来机遇与挑战

云计算de小白 Forrester 在其“2024 年十大云计算趋势”报告中表示&#xff1a;“2024 年&#xff0c;基于云端的 AI 产品的市场采用和普及度将达到高潮。” Forrester 表示&#xff1a;“企业用户已经投资了微软 M365 Copilot 等人工智能服务作为提高生产力的工具&#xff0…

2024新淘宝镜像地址下载【vue-cli】

需要先安装NodeJS&#xff0c;然后再安装Vue-cli NodeJS下载 nodejs下载&#xff0c;直接搜官网 网址&#xff1a;https://nodejs.org/zh-cn LTS为长期稳定版本&#xff1a; 安装过程 只需要配置一下安装目录&#xff0c;其他都点下一步next 注意安装目录无中文无空格 验证…

vulnhub-Basic Pentesting 2靶机

vulnhub&#xff1a;https://www.vulnhub.com/entry/basic-pentesting-2,241/ 导入靶机(建议VirtualBox&#xff0c;VMWare扫不到)&#xff0c;放在kali同网段&#xff0c;扫描 靶机在192.168.81.3&#xff0c;扫描端口 很多端口&#xff0c;存在网站服务&#xff0c;访问 啥也…

加密与安全_HTOP 一次性密码生成算法

文章目录 HOTP 的基础原理HOTP 的工作流程HOTP 的应用场景HOTP 的安全性安全性增强措施Code生成HOTP可配置项校验HOTP可拓展功能计数器&#xff08;counter&#xff09;计数器在客户端和服务端的作用计数器的同步机制客户端和服务端中的计数器表现服务端如何处理计数器不同步计…

centos7安装docker-ce服务

docker服务安装 前言一、使用阿里云源进行安装二、使用清华源安装三、使用官网源安装 前言 centos7安装docker-ce 服务 一、使用阿里云源进行安装 centos7安装docker在国内使用阿里云的源安装比较快速。 # 获取yum源 sudo yum install -y yum-utils; sudo yum-config-manager …

(Linux驱动学习 - 4).Linux 下 DHT11 温湿度传感器驱动编写

DHT11的通信协议是单总线协议&#xff0c;可以用之前学习的pinctl和gpio子系统完成某IO引脚上数据的读与写。 一.在设备树下添加dht11的设备结点 1.流程图 2.设备树代码 &#xff08;1&#xff09;.在设备树的 iomuxc结点下添加 pinctl_dht11 &#xff08;2&#xff09;.在根…

解决Excel时出现“被保护单元格不支持此功能“的解决办法,详细喂饭级教程

今天有个朋友发过来一个excel文件&#xff0c;本来想修改表格的内容&#xff0c;但是提示&#xff0c;被保护单元格不支持此功能&#xff0c;对于这个问题&#xff0c;找到一个解决方法&#xff0c;现记录下来&#xff0c;分享给有需要的朋友。 表格文件名为aaa.xls,以WPS为例。…

十一、磁盘的结构

1.磁盘的结构 磁盘 磁盘由表面涂有磁性物质的圆形盘片组成 磁道 每个盘片被划分为一个个磁道 扇区 每个磁道又划分为一个个扇区&#xff0c;每个扇区就是“磁盘块”&#xff0c;由于其容量相等&#xff0c;内磁道扇区面积小&#xff0c;故密度大。 盘面 磁盘有多个盘片“…

【AIGC】ChatGPT提示词解析:如何打造个人IP、CSDN爆款技术文案与高效教案设计

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;打造个人IP爆款文案提示词使用方法 &#x1f4af;CSDN爆款技术文案提示词使用方法 &#x1f4af;高效教案设计提示词使用方法 &#x1f4af;小结 &#x1f4af;前言 在这…

时序必读论文14|VLDB24 TFB:全面且公平的时间序列预测方法框架

论文标题&#xff1a;TFB: Towards Comprehensive and Fair Benchmarking of Time Series Forecasting Methods 论文链接&#xff1a;https://arxiv.org/pdf/2403.20150.pdf 代码链接&#xff1a;https://github.com/decisionintelligence/TFB 前言 五一过后读的第一篇文章…

MySQL 大数据量导入与导出全攻略

《MySQL 大数据量导入与导出全攻略》 在实际的数据库应用中&#xff0c;我们经常会遇到需要处理大数据量的导入和导出的情况。无论是数据迁移、备份恢复&#xff0c;还是数据共享&#xff0c;高效地处理大数据量都是至关重要的。那么&#xff0c;MySQL 是如何应对大数据量的导…

深度学习 Transformer 的标签平滑(Label Smoothing)

01 引言 标签平滑&#xff08;Label Smoothing&#xff09;是一种正则化技术&#xff0c;用于深度学习中的分类任务&#xff0c;尤其是在Transformer模型中。它的目的是减少模型对于训练数据中硬标签&#xff08;hard labels&#xff0c;即标准的one-hot编码&#xff09;的过…

期权卖方怎么选择权利金高的品种,期货VIX高低对行情有什么影响

VIX指数——全称为芝加哥期权交易所市场波动率指数&#xff0c;俗称恐慌指数。 是衡量波动性的重要指标。VIX指数上升&#xff0c;预期未来市场波动性会增加。VIX指数下降&#xff0c;预期未来市场波动性会降低。 期货VIX指数最新价格排序 期权卖方尽量选择期货VIX指数在25以…

【亲测】windows快捷键冲突检测(可删除)-OpenArk

官方下载链接&#xff1a;Releases BlackINT3/OpenArk (github.com) CSDN下载链接&#xff1a;【免费】windows快捷键冲突检测&#xff1a;OpenArk-v1.3.6.zip资源-CSDN文库 内核 -> 系统热键 -> 进入内核模式

10.2 Linux_并发_进程相关函数

创建子进程 函数声明如下&#xff1a; pid_t fork(void); 返回值&#xff1a;失败返回-1&#xff0c;成功返回两次&#xff0c;子进程获得0(系统分配)&#xff0c;父进程获得子进程的pid 注意&#xff1a;fork创建子进程&#xff0c;实际上就是将父进程复制一遍作为子进程&…

深度学习500问——Chapter17:模型压缩及移动端部署(3)

文章目录 17.7 压缩和加速方法如何选择 17.8 改变网络结构设计为什么会实现模型压缩、加速 17.8.1 Group convolution 17.8.2 Depthwise separable convolution 17.8.3 输入输出的channel相同时&#xff0c;MAC最小 17.8.4 减少组卷积的数量 17.8.5 减少网络碎片化程度&#xf…

【Vue】vue2项目打包后部署刷新404,配置publicPath ./ 不生效问题

Vue Router mode&#xff0c;为 history 无效&#xff0c;建议使用默认值 hash&#xff1b;

C++语言学习(2): name lookup 的概念

何谓 name lookup C 中很重要的一个概念&#xff1a;name lookup。 当编译器在遇到一个 name 的时候&#xff0c; 会做查找&#xff08;lookup&#xff09;&#xff0c;会把引入这个 name 的声明和它关联起来&#xff0c;具体来说&#xff0c;又包含两种类型的 lookup&#xf…

深蕾半导体Astra™ SL1620详细介绍,嵌入式物联网处理器

一&#xff0c;SL1620是什么 Astra™ SL系列是深蕾半导体推出的高度集成的嵌入式物联网处理器SoC&#xff08;System on Chip&#xff09;系列产品&#xff0c;专为多模式消费者、企业和工业物联网工作负载而设计。SL1620是Astra™ SL系列中的一款成本和功耗优化的安全嵌入式So…