背景:看到公司的项目从struct2改造为springmvc,其实从本科开始学习struct2开始对struct2很混乱,之后做了一些springmvc的项目,但每次开发之前老师或者师姐都会创建好项目,并且各个配置文件也都写好,自己也没有去了解学习过这些,导致一致对于所有的配置都很混乱,对于struct2以及springmcv的区别更是一塌糊涂。在工作中对于知识以及业务需要知其然并且知其所以然。加油,koala。
一、struct2的认知
- 基本解释:struct2 是一个mvc框架
其中,M是指model,存储数据,是使用的javaBean;(javaBean必须有get、set方法)
V是jsp;
例子如下:
login.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!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=ISO-8859-1">
<title>Basic Struts 2 Application - Welcome</title>
</head>
<body>
<h1>Welcome To Struts 2!</h1>
<%--<p><a href="<s:url%20action='Welcome'/>">Hello World</a></p>--%>
<h2>test!</h2>
<form action="Welcome.action">
UserName: <input type="text" name="m_user.UserName"/>
Password: <input type="password" name="m_user.password"/>
<br>
<input type="submit">
</form>
<%--<s:form action="Welcome">--%>
<%--<s:textfield name="m_user.userName" label="username"/>--%>
<%--<s:password name="m_user.password" label="password"/>--%>
<%--<s:submit/>--%>
<%--</s:form>--%>
</body>
</html>
Welcome.jsp
<%--
Created by IntelliJ IDEA.
User: yanzexin
Date: 16/9/4
Time: 上午8:38
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<h1> Hello struts2!</h1>
<h2><s:property value="m_user.userName"/> </h2>
</body>
</html>
由以上两个jsp可以看出,可以使用form表单来传输数据,但在login.jsp中的name以及welcome.jsp中的value必须写对action类中的成员变量的名称,否则数据无法正确传输。
C是继承ActionSupport的类来实现控制,其实就是action,主要是excute函数,由于后续会被当做javaBean使用,因此需要有set、get方法。
2、配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!--code here!-->
<package name="user" extends="struts-default">
<action name="login">
<result>/login.jsp</result>
</action>
<action name="Welcome" class="actions.UserAction" method="execute">
<result name="success">/Welcome.jsp</result>
<result name="error">/Fail.jsp</result>
</action>
</package>
</struts>
调用Welcome方法,会映射到actions包里的UserAction(就是前面的Controller)并且调用execute方法。如果结果是success,就是调用/Welcome.jsp页面,如果结果是error就是调用/Fail.jsp页面。
如果方法名是execute,就不用写method=“execute”了。
没有指定class属性,默认使用ActionSupport类
3、扩展
由以上一个登陆功能可以看出,struct2中是一个请求对应一个action,所以struct2为类级别的拦截,一个类对应一个request上下文。
二、springmvc 认知
1、springmvc配置文件基础
1) 配置配置文件加载监听器ContextLoaderListener
ContextLoaderListener它的作用是启动web容器,(加载配置文件)自动装配applicationContext.xml配置信息。
2) 部署applicationContext.xml文件(监听方式实现加载)
一般配置service、dao等model层
如果不写任何参数配置,默认的是在/WEB-INF/applicationContext.xm
如果想要自定义文件名,需要在web.xml中加入contextConfigLocation这个context参数
<!– 配置applicationContext.xml –>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext*.xml</param-value>
</context-param>
3) 配置过滤器(字符过滤器、url过滤器等)
各种过滤器的配置,例如:
<filter>
<filter-name>charsetFilter</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>
4) 配置前段控制器(DispatcherServlet)
DispatchServlet是HTTP请求的中央调度处理器,它将web请求转发给controller层处理,它提供了敏捷的映射和异常处理机制。
<servlet> <servlet-name>appServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-config-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
其中init-param中是初始化applicationContext.xml。一般配置controller层
5) 配置错误页面
2. 自动装配
<context:component-scan base-package="com.jd.*"/>
在该配置文件中使用 context:component-scan 自动扫描包base-package中目录下可以作为javabean加载的类并加载,其中会扫描包含Service,Component,Repository(持久层dao),Controller注解修饰的类
3、maven 管理的项目的配置文件 -Settings.xml文件
setting文件是maven的配置文件,是全局的。pom.xml是局部的,是所在项目的局部配置。
1) Settings.xml文件中的元素
a) Profiles
Profile的作用是根据环境参数来构建配置列表
它包含了id、activation、repositories、pluginRepositories和 properties元素。
如果一个settings.xml中的profile被激活,它的值会覆盖任何其它定义在pom.xml中带有相同id的profile。
i. Properties
Profile的扩展属性列表。用来存放一些值,例如,our-project通过以下设置,可以在其他配置文件中使用,使用方式${ user.install }。
<properties>
<user.install>our-project</user.install>
</properties>
2) ActiveProfiles
作用:用来激活profile 列表。
初步整理就这些,后期再继续整理。。。。