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

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 方式二

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL报错】---Data truncated for column ‘age‘ at row...

目录 一、前言二、问题分析三、解决办法 一、前言 欢迎大家来到权权的博客~欢迎大家对我的博客进行指导&#xff0c;有什么不对的地方&#xff0c;我会及时改进哦~ 博客主页链接点这里–>&#xff1a;权权的博客主页链接 二、问题分析 问题一修改表结构 XXX 为 not n…

【Linux系统编程】第二十七弹---文件描述符与重定向:fd奥秘、dup2应用与Shell重定向实战

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、文件描述符fd 1.1、0 & 1 & 2 1.2、文件描述符的分配规则 2、重定向 3、使用 dup2 系统调用 3.1、> 输出…

数字图像处理:空间域滤波

1.数字图像处理&#xff1a;空间域滤波 1.1 滤波器核&#xff08;相关核&#xff09;与卷积 图像上的邻域计算 线性空间滤波的原理 滤波器核&#xff08;相关核&#xff09;是如何得到的&#xff1f; 空间域的卷积 卷积&#xff1a;滤波器核与window中的对应值相乘后所有…

新品:新一代全双工音频对讲模块SA618F22-C1

SA618F22-C1是我司一款升级版的无线数字和音频二合一全双工传输模块&#xff0c;支持8路并发高音质通话。用户不仅可以通过串口实现数据的无线传输&#xff0c;还可以通过I2S数字音频或模拟音频接口来传输语音信号。该模块内置高速微控制器、回声消除电路、ESD静电防护、高性能…

vmware Workstation16设置批量虚拟机开机自启 vmAutoStart

文章目录 前言解压压缩包一、使用步骤1.获取虚拟机所在目录2.获取vmware所在目录3.测试启动4.开机自启 二、gitee总结 前言 vmware workstation16不支持虚拟机开机自启&#xff0c;通常的办法是写脚本&#xff0c;但是有个问题就是不能启动多台虚拟机&#xff0c;因为有时候会…

C# 字符与字符串

本课要点&#xff1a; 1、字符类Char的使用 2、字符串类String的使用 3、可变字符串****StringBuilder 4、常见错误 一 何时用到字符与字符串 问题&#xff1a; 输出C#**课考试最高分&#xff1a;**98.5 输出最高分学生姓名&#xff1a;张三 输出最高分学生性别&#x…

Pikichu-xss实验案例-通过xss获取cookie

原理图&#xff1a; pikachu提供了一个pkxss后台&#xff1b; 该后台可以把获得的cookie信息显示出来&#xff1b; 查看后端代码cookie.php&#xff1a;就是获取cookie信息&#xff0c;保存起来&#xff0c;然后重定向跳转到目标页面&#xff1b;修改最后从定向的ip&#xff0…

无人机控制和飞行、路径规划技术分析

无人机控制和飞行、路径规划技术是现代无人机技术的核心组成部分&#xff0c;它们共同决定了无人机的性能和应用范围。以下是对这些技术的详细分析&#xff1a; 一、无人机控制技术 无人机控制技术主要涉及飞行控制系统的设计、传感器数据的处理以及指令的发送与执行。飞行控…

Spring Session学习

系列文章目录 JavaSE基础知识、数据类型学习万年历项目代码逻辑训练习题代码逻辑训练习题方法、数组学习图书管理系统项目面向对象编程&#xff1a;封装、继承、多态学习封装继承多态习题常用类、包装类、异常处理机制学习集合学习IO流、多线程学习仓库管理系统JavaSE项目员工…

太原网站制作打造企业网站的关键要素

太原网站制作&#xff1a;打造企业网站的关键要素 在数字化时代&#xff0c;企业网站成为了品牌形象和市场营销的重要一环。太原的企业在进行网站制作时&#xff0c;需要关注几个关键要素&#xff0c;以确保网站能够有效提升企业竞争力和用户体验。 **1. 目标明确** 在网站制…

Redis篇(数据类型)

目录 讲解一&#xff1a;简介 讲解二&#xff1a;常用 一、String类型 1. 简介 2. 常见命令 3. Key结构 4. 操作String 5. 实例 二、Hash类型 1. 简介 2. 常见命令 3. 3操作hash 4. 实例 三、List类型 1. 简介 2. 特征 3. 应用场景 4. 常见命令 5. 操作list …

Python办公自动化之Word

在现代办公环境中&#xff0c;自动化无疑是提升工作效率的关键。特别是处理文档的工作&#xff0c;很多人可能花费大量时间在重复性任务上。那么&#xff0c;有没有一种方法可以让我们用 Python 来自动化 Word 文档的操作呢&#xff1f;今天&#xff0c;我们来聊聊如何用 Pytho…

基于php的在线租房管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

光伏项目管理如何更高效化?

一、项目规划与启动阶段的优化 1、智能规划工具&#xff1a;光伏管理软件通常配备有智能项目规划模块&#xff0c;能够根据地理位置、气候条件、政策补贴等因素&#xff0c;自动计算最佳装机容量、预测发电量及收益&#xff0c;帮助项目团队快速制定合理的项目方案。这大大缩短…

golang grpc进阶

protobuf 官方文档 基本数据类型 .proto TypeNotesGo Typedoublefloat64floatfloat32int32使用变长编码&#xff0c;对于负值的效率很低&#xff0c;如果你的域有可能有负值&#xff0c;请使用sint64替代int32uint32使用变长编码uint32uint64使用变长编码uint64sint32使用变长…

Redis: 集群架构,优缺点和数据分区方式和算法

集群 集群指的就是一组计算机作为一个整体向用户提供一组网络资源 我就举一个简单的例子&#xff0c;比如百度&#xff0c;在北京和你在上海访问的百度是同一个服务器吗&#xff1f;答案肯定是不是的&#xff0c;每一个应用可以部署在不同的地方&#xff0c;但是我们提供的服务…

Navicat Premium 12 for Mac中文永久版

目录 一、安装二、修改rpk文件三、获取请求码四、获取jh码 Tip&#xff1a;由于一些jy词&#xff0c;一直不让我发布&#x1f644;&#xff0c;所以只能用拼音简写代替&#xff0c;是不是很无语&#xff0c;我也很无语&#xff0c;各位自行体会一下&#x1f612; 为了避免每次换…

1. 如何在服务器上租GPU跑实验 (以AutoDL为例) - 深度学习·科研实践·从0到1

目录 前言 1. 在AutoDL上注册账号 2. 在算力市场选择GPU 3. 创建实例 4. 控制台-容器实例界面&#xff08;核心&#xff09; 4.1 无卡模式&#xff08;常用&#xff09; 5. 帮助文档 前言 好记性不如烂笔头&#xff0c;本专栏将详细记录下本人学习深度学习工程实践&…

C(十一)scanf、getchar(第三弹)

问题引入&#xff1a;如何实现输入一串密码&#xff0c;如&#xff1a;“123 xxxx” &#xff0c;然后读取并确认&#xff0c;是 -- Y&#xff1b;否 -- N。 自然的&#xff0c;我们想到用scanf&#xff0c;但是在使用过程中你是否遇到跟我一样的困惑呢&#xff1f;如下&…

新闻推荐系统:Spring Boot的创新应用

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…