SpringMvc配置web.xml和SpringMvc.xml基础解析以及下载Interceptor写法

基于eclipse的开发,建立
在这里插入图片描述
项目,注意勾选在这里插入图片描述

  1. 目录结构以及导入的包在这里插入图片描述
    导入的包
    在这里插入图片描述
  2. web.xml的基本配置
  • DispatcherServlet 前端控制器/调度器 指定 DispatcherServlet 配置文件的位置:
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 在 Servlet 上指定一个 contextConfigLocation 初始化参数  contextConfigLocation 指定了一个 XML 文件的地址,定义了 根应用上下文。
会被 ContextLoaderListener 加载。-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
<!--   load-on-startup 元素标记容器是否应该在启动的时候加载这个servlet,(实例化并调用其init()方法)。
        当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet; -->
        <load-on-startup>1</load-on-startup>
    </servlet>
  • 将 DispatcherServlet 映射到 “/”
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
  • encodingFilter 解决乱码,配置utf-8过滤器 注意字符过滤器要写在过滤控制器前
<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>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  1. SpringMvc.xml配置
    在这里插入图片描述
<!-- 1.开启SpringMVC注解驱动 -->
	<mvc:annotation-driven />
	<!-- 2.静态资源 默认servlet配置 -->
	<mvc:default-servlet-handler />

	<!-- 3.配置jsp 显示ViewResolver视图解析器 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/" />
		<property name="suffix" value=".jsp" />
	</bean> 

	<!-- 4.扫描web相关的bean -->
	<context:component-scan base-package="com.tsh.controller" />

	<!-- 上传文件的解释器 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="maxUploadSize" value="#{1024*1024*5}"></property> <!-- byte为单位 -->
	</bean>

  1. Interceptor配置
  • 写入SpringMvc.xml 写法固定
<!-- 配置拦截器组 -->
	<mvc:interceptors>
		<!-- 拦截器 -->
		<mvc:interceptor>
			<!-- 要拦截的配置 -->
			<mvc:mapping path="/form/download/**"  />
			<!-- 设置不拦截的配置 -->
			<!-- <mvc:exclude-mapping path="/login"/> -->
			<!-- 配置拦截器 -->
			<bean class="com.tsh.interceptor.downloadInterceptor" />  
		</mvc:interceptor>
		<!-- 拦截器 -->
		<mvc:interceptor>
			<!-- 要拦截的配置 -->
			<mvc:mapping path="/form2/upload/**"  />
			<!-- 设置不拦截的配置 -->
			<!-- <mvc:exclude-mapping path="/form/"/> -->
			<!-- 配置拦截器 -->
			<bean class="com.tsh.interceptor.uploadInterceptor" />  
		</mvc:interceptor>
</mvc:interceptors>
  • Interceptor的downloadInterceptor.java代码
  • 注意,重定向的请求不能生效,因为response的请求再提交之后不能再进行修改!**
public class downloadInterceptor implements HandlerInterceptor{
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
		System.out.println("进入文件下载拦截器");
		if (request.getRequestURI().contains("vip")) {
			System.out.println("允许下载");
			return true;
		} else {
			System.out.println("只有会员才能下载!");
//			request.setCharacterEncoding("utf-8");
//			request.getSession().setAttribute("msg", "只有会员才能下载");
			System.out.println(request.getServletContext().getContextPath());
//			response.sendRedirect(request.getServletContext().getContextPath()+"/WebContent/WEB-INF/jsp/hello1.jsp");
		}
		return false;
	}
	
	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object arg2, ModelAndView arg3)
			throws Exception {
		System.out.println("下载成功--postHandle");
		
		/**/
//		request.setCharacterEncoding("utf-8");
//		request.getSession().setAttribute("msg", "下载完成");
//		response.sendRedirect("jsp/hello.jsp");
		return;
		
	}
	
	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object arg2, Exception arg3)
			throws Exception {
		// TODO Auto-generated method stub
		System.out.println("下载--afterCompletion");	
	}
}
  • downloadController.java
@Controller
@RequestMapping("/form")
public class downloadController {

	@RequestMapping("download/**")
	public void downLoad(HttpServletRequest request, HttpServletResponse response) throws IOException {
		// 设置下载名称()
		response.setHeader("Content-Disposition", "filename=welcome.png");
		// 设置下载类型
		response.setHeader("Content-Type", "application/png");
		// 准备需要被下载的文件(告诉他下载路径)
		File file = new File("C:\\Users\\asus\\Pictures\\Sketchpad.png");

//		System.out.println("download start");

		// 读文件流(输入流inputStream)
		FileInputStream fileInputStream = new FileInputStream(file);
		// 获取输出流(outPutStream)
		ServletOutputStream servletOutputStream = response.getOutputStream();
		// 开启边读边写操作
		byte[] b = new byte[1024];
		// 记录下读档的位置
		int len = 0;
		while ((len = fileInputStream.read(b)) != -1) {
			servletOutputStream.write(b, 0, len);
		}

		// 下载完成后刷新
		servletOutputStream.flush();
		// 关闭输出流
		servletOutputStream.close();
		// 关闭输入流
		fileInputStream.close();

	}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
由于问题比较长,我会尽量提供详细的步骤和代码示例,但是可能无法完全覆盖所有细节。如果您有具体的问题或疑问,请随时在评论区提出。 步骤1:创建动态网页工程 这个步骤比较简单,可以在Eclipse或IntelliJ IDEA等集成开发环境中创建。选择一个动态web项目,选择使用Maven或Gradle进行项目构建,选择使用SpringMVC和MyBatis框架,创建完成后,将会自动添加默认的配置文件和目录结构。 步骤2:导入SpringMVC框架相应jar包 这个步骤也比较简单,可以在pom.xml文件中添加以下依赖: ```xml <!-- SpringMVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!-- MyBatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis.version}</version> </dependency> ``` 其中,${spring.version}和${mybatis.version}是由您指定的版本号。 步骤3:创建配置文件和相应映射文件 在src/main/resources目录下创建spring-servlet.xml和mybatis-config.xml配置文件,以及相应的Mapper映射文件和Java Bean类。 spring-servlet.xml配置文件示例: ```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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 指定控制器扫描包 --> <context:component-scan base-package="com.example.controller" /> <!-- 开启SpringMVC注解驱动 --> <mvc:annotation-driven /> <!-- 静态资源映射 --> <mvc:resources mapping="/static/**" location="/static/" /> <!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> </beans> ``` mybatis-config.xml配置文件示例: ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <typeAliases> <!-- 指定Java Bean类的包名 --> <package name="com.example.pojo" /> </typeAliases> <mappers> <!-- 指定Mapper映射文件的包名 --> <mapper resource="mapper/UserMapper.xml" /> </mappers> </configuration> ``` Mapper映射文件示例(UserMapper.xml): ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.mapper.UserMapper"> <!-- 查询用户信息 --> <select id="selectUserById" parameterType="int" resultType="com.example.pojo.User"> SELECT * FROM user WHERE id = #{id} </select> <!-- 插入用户信息 --> <insert id="insertUser" parameterType="com.example.pojo.User"> INSERT INTO user(username, password, email) VALUES(#{username}, #{password}, #{email}) </insert> </mapper> ``` Java Bean类示例(User.java): ```java public class User { private Integer id; private String username; private String password; private String email; // getter和setter方法省略 // ... } ``` 步骤4:编写相应配置 在以上配置文件中,已经给出了比较详细的示例。需要注意的是,spring-servlet.xml配置文件中需要指定控制器扫描包,开启SpringMVC注解驱动,以及配置视图解析器和静态资源映射。mybatis-config.xml配置文件中需要指定Java Bean类和Mapper映射文件的包名,以及相应的查询和插入操作。 步骤5:编写教师列表功能的控制器方法,返回JSON格式数据 这个步骤需要编写一个控制器方法,用于查询数据库中的教师信息,并将其转换为JSON格式数据返回。在这个示例中,我们使用SpringMVC的@ResponseBody注解将返回值转换为JSON格式数据,使用MyBatis进行数据库查询操作。 控制器示例(UserController.java): ```java @Controller @RequestMapping("/user") public class UserController { @Autowired private UserMapper userMapper; @RequestMapping(value = "/list", method = RequestMethod.GET) @ResponseBody public List<User> list() { return userMapper.selectAll(); } } ``` Mapper接口示例(UserMapper.java): ```java public interface UserMapper { List<User> selectAll(); } ``` 步骤6:用浏览器访问教师列表功能,显示JSON数据 在浏览器中输入http://localhost:8080/user/list,即可访问教师列表功能,并显示JSON数据。如果一切正常,您将会看到类似以下的JSON数据: ```json [{"id":1,"username":"张三","password":"123456","email":"[email protected]"},{"id":2,"username":"李四","password":"654321","email":"[email protected]"}] ``` 至此,用户注册、登录和个人信息查看功能的开发基本完成。您可以根据需求进一步完善和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值