SpringMVC学习笔记

本文详细介绍了如何搭建一个简单的SpringMVC环境,包括配置DispatcherServlet、设置静态资源路径、配置视图解析器等步骤。

最近复习了一下SpringMVC,感觉很久不用很多知识点都忘的差不多了。所以打算还是记录一下怎么搭一个建议SpringMVC环境出来。

1、首先要配置SpringMVC的调度器

<?xml version="1.0" encoding="UTF-8"?>  
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
 	
 	<display-name>springmvc</display-name>
 	<!-- 指定ApplicationContext的配置信息的路径,不指定默认为/WEB-INF/applicationContext.xml -->
	  <context-param>
	  		<param-name>contextConfigLocation</param-name>  
	        <param-value>  
	            classpath*:config/applicationContext.xml  
	        </param-value>
	  </context-param>
  
  <!-- 配置springmvc转发器 -->
  <servlet>
  	<servlet-name>dispatcherServlet</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath*:config/springmvc-servlet.xml</param-value>
  	</init-param>
  	<load-on-startup>1</load-on-startup>	
  </servlet>
   <servlet-mapping>
  	<servlet-name>dispatcherServlet</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>
   <!-- ContextLoaderListener监听器的作用就是启动Web容器时,自动装配ApplicationContext的配置信息 -->
  <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
   </listener>
 
  
</web-app>
所有浏览器对服务端的请求都会先通过DispatcherServlet调度。同时我们指定SpringMVC对应的配置文件为springmvc-servlet.xml,在这个文件里面进行一些静态资源范文配置,Controller扫描注入。

2、springmvc-servlet.xml,主要是SpringMVC的一些基本配置信息

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:mvc="http://www.springframework.org/schema/mvc" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://www.springframework.org/schema/beans" 
	xmlns:task="http://www.springframework.org/schema/task"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc 
		http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
		http://www.springframework.org/schema/task 
		http://www.springframework.org/schema/task/spring-task-3.2.xsd
		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">
		
	
	<mvc:annotation-driven />
	<context:component-scan base-package="com.springmvc.controller"/>
    
    <!-- 设置静态资源的路径,因为web.xml中的DispatcherServlet会拦截所有请求,默认路径是src/main/webapp/ -->
	<mvc:resources mapping="/jsp/**" location="/jsp/"/>
	<mvc:resources mapping="/js/**" location="/js/" />

	<!-- 配置视图解析器,返回的链接地址会加上前缀和后缀,如返回login,最终浏览器请求/jsp/login.jsp -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/jsp/"/>
		<property name="suffix" value=".jsp"/>
	</bean>

	<!-- 文件上传处理 -->
	<!-- <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		 <property name="maxUploadSize" value="1572846"/>
		 <property name="resolveLazily" value="true"/>      
	</bean> -->

</beans>
3、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:aop="http://www.springframework.org/schema/aop" 
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc" 
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:task="http://www.springframework.org/schema/task"
	xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
	xsi:schemaLocation="
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.2.xsd
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
     http://www.springframework.org/schema/jdbc 
     http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx-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/task 
     http://www.springframework.org/schema/task/spring-task-3.2.xsd
     http://code.alibabatech.com/schema/dubbo 
     http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
	<!-- properties加载 -->
    <bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="locations">
            <list>
                <value>classpath*:*.properties</value>
            </list>
        </property>
    </bean>
    <!-- spring变量替换 -->
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
        <property name="properties" ref="configProperties"/>
    </bean>
	
</beans>
4、新建一个controller类,注意package路径要和springmvc-servlet.xml配置的包扫描路径相同。

package com.springmvc.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping(value="/user")
public class UserController {
	
	@RequestMapping(value="/login",method=RequestMethod.GET)
	public String login(HttpServletRequest request,HttpServletResponse response){
		return "/login";
	}
	
	@RequestMapping(value="/loginCheck",method=RequestMethod.POST)
	public ModelAndView loginCheck(HttpServletRequest request,HttpServletResponse response){
		String username=request.getParameter("username");
		String password=request.getParameter("password");
		ModelAndView modelAndView=new ModelAndView();
		if("admin".equals(username)&&"123456".equals(password)){
			modelAndView.addObject("username", username);
			modelAndView.setViewName("/success");
		}else{
			modelAndView.addObject("errorMsg", "用户名和密码错误");
			modelAndView.setViewName("/login");
		}
		return modelAndView;
	}
}

5、最后就是几个jsp页面了。

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path;
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"">
<title>Insert title here</title>
<script type="text/javascript" src="<%=basePath %>/js/jquery.min.js"></script>
</head>
<script type="text/javascript">
	$(function(){
		
		
		
	});
	function login(){
			var username=$("username").val();
			var password=$("password").val();
			console.info('哈哈哈');
			$("#loginForm").submit();
	}
	
</script>
<body>
	<form action="<%=basePath %>/user/loginCheck" method="post" name="loginForm" id="loginForm">
		<table>
			<tr>
				<td><label>用户名:</label></td>
				<td><input type="text" name="username" id="username"/></td>
			</tr>
			<tr>
				<td><label>密码:</label></td>
				<td><input type="password" name="password" id=password""/></td>
			</tr>
		</table>
		${errorMsg }<br/><br/>
		<a href="javascript:void(0)" style="text-decoration: none"><span style="border:1px solid grey;width:120px;height:35px;font-size:14px;font-weight: bold;padding:5px 10px 5px 10px;text-decoration: none;" onclick="login()">登录</span></a>
	</form>

</body>
</html>
success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	${username },登陆成功!
	
</body>
</html>
6、项目结构图




其中pom.xml文件配置如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  
  <groupId>springmvc-learn</groupId>
  <artifactId>springmvc-learn</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  
  <name>springmvc-learn</name>
  <url>http://maven.apache.org</url>
  <dependencies>
   <!--  <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency> -->
    <dependency>
		<groupId>org.apache.geronimo.specs</groupId>
		<artifactId>geronimo-servlet_2.4_spec</artifactId>
		<version>1.1.1</version>
		<!-- provided 范围。这个范围告诉 Mavenjar 文件已经由容器“提供”了,因此不再需要包含在 war 中。 -->
		<scope>provided</scope>
	</dependency>
	<dependency>
		<groupId>org.apache.geronimo.specs</groupId>
		<artifactId>geronimo-jsp_2.0_spec</artifactId>
		<version>1.1</version>
		<scope>provided</scope>
	</dependency>
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-core</artifactId>
	    <version>3.2.2.RELEASE</version>
	</dependency>
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-context</artifactId>
	    <version>3.2.2.RELEASE</version>
	</dependency>
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-beans</artifactId>
	    <version>3.2.2.RELEASE</version>
	</dependency>
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-web</artifactId>
	    <version>3.2.2.RELEASE</version>
	</dependency>
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-webmvc</artifactId>
	    <version>3.2.2.RELEASE</version>
	</dependency>
	
  </dependencies>
  <build>
    <finalName>springmvc</finalName>
    <plugins>
    	<plugin>
    		<groupId>org.mortbay.jetty</groupId>
    		<artifactId>maven-jetty-plugin</artifactId>
    		<version>6.1.26</version>
    		   <configuration>
                    <webAppSourceDirectory>src/main/webapp</webAppSourceDirectory>
                    <scanIntervalSeconds>3</scanIntervalSeconds>
                    <contextPath>/</contextPath>
                    <connectors>
                        <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                            <port>9890</port>
                        </connector>
                    </connectors>
                </configuration>
    	</plugin>
    	 <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.1</version>
                <configuration>
                    <port>9991</port>
                    <path>/springmvc</path>
                    <uriEncoding>UTF-8</uriEncoding>
                    <finalName>springmvc</finalName>
                    <server>tomcat7</server>
                </configuration>
            </plugin>
    	 	<plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
				<!-- 我们想将所有的依赖库都打包,直接交给用户,这样用户不需要在做其他设置了,这里需要使用Assembly插件了,其说明参考Pre-defined 
					Descriptor Files,这个参考文件也说明了有四种默认定义的打包方式,我们选择jar-with-dependencies,继续添加pom文件 -->
				<artifactId>maven-assembly-plugin</artifactId>
				<configuration>
					<descriptorRefs>
						<descriptorRef>jar-with-dependencies</descriptorRef>
					</descriptorRefs>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<additionalClasspathElements>
						<additionalClasspathElement>src/main/webapp/WEB-INF/conf</additionalClasspathElement>
					</additionalClasspathElements>
				</configuration>
			</plugin>
    	</plugins>
    	<resources>
			<resource>
				<directory>src/main/java</directory>
				<includes>
					<include>**/*.xml</include>
					<include>**/*.flt</include>
				</includes>
			</resource>
			
			<resource>
				<directory>src/main/resources</directory>
				<includes>
					<include>**/*.xml</include>
					<include>**/*.properties</include>
				</includes>
			</resource>
		</resources>
  </build>
</project>

运行结果图:


maven项目可直接用maven编译,通过tomcat7-maven-plugin运行:



内容概要:本文档是一份关于交换路由配置的学习笔记,系统地介绍了网络设备的远程管理、交换机与路由器的核心配置技术。内容涵盖Telnet、SSH、Console三种远程控制方式的配置方法;详细讲解了VLAN划分原理及Access、Trunk、Hybrid端口的工作机制,以及端口镜像、端口汇聚、端口隔离等交换技术;深入解析了STP、MSTP、RSTP生成树协议的作用与配置步骤;在路由部分,涵盖了IP地址配置、DHCP服务部署(接口池与全局池)、NAT转换(静态与动态)、静态路由、RIP与OSPF动态路由协议的配置,并介绍了策略路由和ACL访问控制列表的应用;最后简要说明了华为防火墙的安全区域划分与基本安全策略配置。; 适合人群:具备一定网络基础知识,从事网络工程、运维或相关技术岗位1-3年的技术人员,以及准备参加HCIA/CCNA等认证考试的学习者。; 使用场景及目标:①掌握企业网络中常见的交换与路由配置技能,提升实际操作能力;②理解VLAN、STP、OSPF、NAT、ACL等核心技术原理并能独立完成中小型网络搭建与调试;③通过命令示例熟悉华为设备CLI配置逻辑,为项目实施和故障排查提供参考。; 阅读建议:此笔记以实用配置为主,建议结合模拟器(如eNSP或Packet Tracer)动手实践每一条命令,对照拓扑理解数据流向,重点关注VLAN间通信、路由选择机制、安全策略控制等关键环节,并注意不同设备型号间的命令差异。
多旋翼无人机组合导航系统-多源信息融合算法(Matlab代码实现)内容概要:本文围绕多旋翼无人机组合导航系统,重点介绍了基于多源信息融合算法的设计与实现,利用Matlab进行代码开发。文中采用扩展卡尔曼滤波(EKF)作为核心融合算法,整合GPS、IMU(惯性测量单元)、里程计和电子罗盘等多种传感器数据,提升无人机在复杂环境下的定位精度与稳定性。特别是在GPS信号弱或丢失的情况下,通过IMU惯导数据辅助导航,实现连续可靠的位姿估计。同时,文档展示了完整的算法流程与Matlab仿真实现,涵盖传感器数据预处理、坐标系转换、滤波融合及结果可视化等关键环节,体现了较强的工程实践价值。; 适合人群:具备一定Matlab编程基础和信号处理知识,从事无人机导航、智能控制、自动化或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于多旋翼无人机的高精度组合导航系统设计;②用于教学与科研中理解多传感器融合原理与EKF算法实现;③支持复杂环境下无人机自主飞行与定位系统的开发与优化。; 阅读建议:建议结合Matlab代码与理论推导同步学习,重点关注EKF的状态预测与更新过程、多传感器数据的时间同步与坐标变换处理,并可通过修改噪声参数或引入更多传感器类型进行扩展实验。
源码来自:https://pan.quark.cn/s/28c3abaeb160 在高性能计算(High Performance Computing,简称HPC)范畴内,处理器的性能衡量对于改进系统构建及增强运算效能具有关键价值。 本研究聚焦于一种基于ARM架构的处理器展开性能评估,并就其性能与Intel Xeon等主流商业处理器进行对比研究,特别是在浮点运算能力、存储器带宽及延迟等维度。 研究选取了高性能计算中的典型任务,诸如Stencils计算方法等,分析了在ARM处理器上的移植编译过程,并借助特定的执行策略提升运算表现。 此外,文章还探讨了ARM处理器在“绿色计算”范畴的应用前景,以及面向下一代ARM服务器级SoC(System on Chip,简称SoC)的性能未来探索方向。 ARM处理器是一种基于精简指令集计算机(Reduced Instruction Set Computer,简称RISC)架构的微处理器,由英国ARM Holdings公司研发。 ARM处理器在移动设备、嵌入式系统及服务器级计算领域获得广泛应用,其设计优势体现为高能效比、低成本且易于扩展。 当前的ARMv8架构支持64位指令集,在高性能计算领域得到普遍采用。 在性能测试环节,重点考察了处理器的浮点运算能力,因为浮点运算在科学计算、图形渲染和数据处理等高性能计算任务中扮演核心角色。 实验数据揭示,ARM处理器在双精度浮点运算方面的性能达到475 GFLOPS,相当于Intel Xeon E5-2680 v3处理器性能的66%。 尽管如此,其内存访问带宽高达105 GB/s,超越Intel Xeon处理器。 这一发现表明,在数据密集型应用场景下,ARM处理器能够展现出与主流处理器相匹敌的性能水平。 在实践...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值