程序员开发实例大全宝库

网站首页 > 编程文章 正文

SSM博客系统框架搭建篇(ssm博客项目)

zazugpt 2024-08-19 02:57:12 编程文章 23 ℃ 0 评论

今天一起来把之前文章提到的博客系统的框架结构搭建出来。想做这个项目的自己动手练练。

这个项目用mavan来管理的,新建一个maven项目。建好以后会生生一个pom.xml文件,先从它开始配置。

一:【pom.xml配置】<dependencies> </dependencies>在此标签加入如下配置;集成springmvc,spring,mybatis的配置与jar包加载。另外还有就是项目中所有用到的其他集成框架的配置。

 <dependencies>
 <!-- 添加Servlet支持 -->
 	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>javax.servlet-api</artifactId>
		<version>3.1.0</version>
	</dependency>
	
	<dependency>
		<groupId>javax.servlet.jsp</groupId>
		<artifactId>javax.servlet.jsp-api</artifactId>
		<version>2.3.1</version>
	</dependency>
	
	<!-- 添加jstl支持 -->
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>jstl</artifactId>
		<version>1.2</version>
	</dependency>
 
 	<!-- 添加Spring支持 -->
	<dependency>
 		<groupId>org.springframework</groupId>
 		<artifactId>spring-core</artifactId>
 		<version>4.1.7.RELEASE</version>
 	</dependency>
 	<dependency>
 		<groupId>org.springframework</groupId>
 		<artifactId>spring-beans</artifactId>
 		<version>4.1.7.RELEASE</version>
 	</dependency>
 	<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-tx</artifactId>
 <version>4.1.7.RELEASE</version>
 </dependency>
 	<dependency>
 		<groupId>org.springframework</groupId>
 		<artifactId>spring-context</artifactId>
 		<version>4.1.7.RELEASE</version>
 	</dependency>
 	<dependency>
 		<groupId>org.springframework</groupId>
 		<artifactId>spring-context-support</artifactId>
 		<version>4.1.7.RELEASE</version>
 	</dependency>
 	
 	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-web</artifactId>
		<version>4.1.7.RELEASE</version>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-webmvc</artifactId>
		<version>4.1.7.RELEASE</version>
	</dependency>
	
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-aop</artifactId>
		<version>4.1.7.RELEASE</version>
	</dependency>
	
 <dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-aspects</artifactId>
		<version>4.1.7.RELEASE</version>
	</dependency>
	
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-jdbc</artifactId>
		<version>4.1.7.RELEASE</version>
	</dependency>
 
	 <dependency>
		<groupId>org.mybatis</groupId>
		<artifactId>mybatis-spring</artifactId>
		<version>1.2.3</version>
	</dependency>
	
 <!-- 添加日志支持 -->
 	<dependency>
		<groupId>log4j</groupId>
		<artifactId>log4j</artifactId>
		<version>1.2.17</version>
	</dependency>
	
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-log4j12</artifactId>
		<version>1.7.12</version>
	</dependency>
	
	<!-- 添加mybatis支持 -->
	 <dependency>
		<groupId>org.mybatis</groupId>
		<artifactId>mybatis</artifactId>
		<version>3.3.0</version>
	</dependency>
	
	<!-- jdbc驱动包 -->
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.37</version>
	</dependency>
	
	<!-- 添加shiro支持 -->
	<dependency>
		<groupId>org.apache.shiro</groupId>
		<artifactId>shiro-core</artifactId>
		<version>1.2.4</version>
	</dependency>
	
	<dependency>
		<groupId>org.apache.shiro</groupId>
		<artifactId>shiro-web</artifactId>
		<version>1.2.4</version>
	</dependency>
	
	<dependency>
		<groupId>org.apache.shiro</groupId>
		<artifactId>shiro-spring</artifactId>
		<version>1.2.4</version>
	</dependency>
	
	
	<!-- 添加百度编辑器ueditor支持 -->
	<dependency>
		<groupId>commons-fileupload</groupId>
		<artifactId>commons-fileupload</artifactId>
		<version>1.3.1</version>
	</dependency>
	
	<!-- apache公共包 -->
	<dependency>
		<groupId>commons-codec</groupId>
		<artifactId>commons-codec</artifactId>
		<version>1.10</version>
	</dependency>
	
	<dependency>
		<groupId>commons-lang</groupId>
		<artifactId>commons-lang</artifactId>
		<version>2.5</version>
	</dependency>
	
	<dependency>
		<groupId>commons-beanutils</groupId>
		<artifactId>commons-beanutils</artifactId>
		<version>1.8.0</version>
	</dependency>
	
	<dependency>
		<groupId>commons-collections</groupId>
		<artifactId>commons-collections</artifactId>
		<version>3.2.1</version>
	</dependency>
	
	<dependency>
		<groupId>commons-logging</groupId>
		<artifactId>commons-logging</artifactId>
		<version>1.1.1</version>
	</dependency>
	
	<dependency>
		<groupId>net.sf.ezmorph</groupId>
		<artifactId>ezmorph</artifactId>
		<version>1.0.6</version>
	</dependency>
	
	<!-- 添加lucene支持 ;主要用来做全文检索用的-->
	<dependency>
		<groupId>org.apache.lucene</groupId>
		<artifactId>lucene-core</artifactId>
		<version>5.3.1</version>
	 </dependency>
	 
	 <dependency>
		<groupId>org.apache.lucene</groupId>
		<artifactId>lucene-analyzers-common</artifactId>
		<version>5.3.1</version>
	 </dependency>
	 
	 <dependency>
		<groupId>org.apache.lucene</groupId>
		<artifactId>lucene-analyzers-smartcn</artifactId>
		<version>5.3.1</version>
	</dependency>
	 
	 
	 <dependency>
		<groupId>org.apache.lucene</groupId>
		<artifactId>lucene-queryparser</artifactId>
		<version>5.3.1</version>
	 </dependency>
	 
	 <dependency>
		<groupId>org.apache.lucene</groupId>
		<artifactId>lucene-highlighter</artifactId>
		<version>5.3.1</version>
	</dependency>
	
	<!-- 添加连接池druid支持;目的是为了提高这个并发性的 -->
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>druid</artifactId>
		<version>1.0.16</version>
	</dependency>
	</dependencies>

二:【springmvc进行配置】

配置spring-mvc.xml;

 <mvc:annotation-driven/>
	<mvc:resources mapping="/static/**" location="/static/"/>
	<!-- 视图解析器 -->
	<bean id="viewResolver"
	class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/" />
		<property name="suffix" value=".jsp"></property>
	</bean>
	
	<bean id="multipartResolver"
 class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
 <property name="defaultEncoding" value="UTF-8"/> 
	 <property name="maxUploadSize" value="10000000"/>
	</bean>
	<!-- 使用注解的包,包括子集 -->
	<context:component-scan base-package="com.java.controller" />

三:【spring配置】

配置:applicationContext.xml;

<!-- 配置数据源 -->
	<bean id="dataSource"
		class="com.alibaba.druid.pool.DruidDataSource">
		<property name="url" value="jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=UTF-8"/>
		<property name="username" value="用户名"/>
		<property name="password" value="密码"/>
	</bean>
<!-- 配置mybatis的sqlSessionFactory -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
<!-- 自动扫描mappers.xml文件 -->
		<property name="mapperLocations" value="classpath:com/java/mappers/*.xml"></property>
		<!-- mybatis配置文件 -->
		<property name="configLocation" value="classpath:mybatis-config.xml"></property>
	</bean>
	<!-- DAO接口所在包名,Spring会自动查找其下的类 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.javadao" />
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
	</bean>
	<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>
	
	<!-- 自定义Realm -->
	<bean id="myRealm" class="com.java.realm.MyRealm"/> 
	
	<!-- 安全管理器 -->
	<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> 
 	 <property name="realm" ref="myRealm"/> 
	</bean> 
	
	<!-- Shiro过滤器 -->
	<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> 
	 <!-- Shiro的核心安全接口,这个属性是必须的 --> 
	 <property name="securityManager" ref="securityManager"/>
	 <!-- 身份认证失败,则跳转到登录页面的配置 --> 
	 <property name="loginUrl" value="/login.jsp"/> 
	 <!-- Shiro连接约束配置,即过滤链的定义 --> 
	 <property name="filterChainDefinitions"> 
	 <value>
 <!-- 我配置下面这个这个目的就是为了一个安全性的操作,只要路径里面带有admin的,就必须进行身份认证,因为所有带有admin的请求的jsp我都放在这个路径下,也就是管理员自己的权限-->
 	/login=anon
				/admin/**=authc
	 </value> 
	 </property>
	</bean> 
	
	<!-- 保证实现了Shiro内部lifecycle函数的bean执行 --> 
	<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/> 
	
	<!-- 开启Shiro注解 -->
	<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"/> 
 		<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"> 
 	 <property name="securityManager" ref="securityManager"/> 
 </bean> 
 
	<!-- 配置事务通知属性 --> 
 <tx:advice id="txAdvice" transaction-manager="transactionManager"> 
 <!-- 定义事务传播属性 --> 
 <tx:attributes> 
 <tx:method name="insert*" propagation="REQUIRED" /> 
 <tx:method name="update*" propagation="REQUIRED" /> 
 <tx:method name="edit*" propagation="REQUIRED" /> 
 <tx:method name="save*" propagation="REQUIRED" /> 
 <tx:method name="add*" propagation="REQUIRED" /> 
 <tx:method name="new*" propagation="REQUIRED" /> 
 <tx:method name="set*" propagation="REQUIRED" /> 
 <tx:method name="remove*" propagation="REQUIRED" /> 
 <tx:method name="delete*" propagation="REQUIRED" /> 
 <tx:method name="change*" propagation="REQUIRED" /> 
 <tx:method name="check*" propagation="REQUIRED" /> 
 <tx:method name="get*" propagation="REQUIRED" read-only="true" /> 
 <tx:method name="find*" propagation="REQUIRED" read-only="true" /> 
 <tx:method name="load*" propagation="REQUIRED" read-only="true" /> 
 <tx:method name="*" propagation="REQUIRED" read-only="true" /> 
 </tx:attributes> 
 </tx:advice> 
 
 <!-- 配置事务切面 --> 
 <aop:config> 
 <aop:pointcut id="serviceOperation" 
 expression="execution(* com.java.service.*.*(..))" /> 
 <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation" /> 
 </aop:config> 
 
 <!-- 自动扫描 -->
	<context:component-scan base-package="com.java.service" />
</beans>

四:【mybatis配置】

配置mybatis-config.xml;

<configuration>
	<!-- 别名 -->
	<typeAliases>
		<package name="com.java.entity"/>
	</typeAliases>
</configuration>
这里我就是把实体都映射到这里了,就不需要加乱七八糟的前缀了。直接用类名就行了。

五:封包:

创建用户实体类:

创建实体类Dao层接口;具体实现交给mybatis;

然后就开始进行创建并配置BloggerMapper.xml;

<mapper namespace="com.java.dao.BloggerDao">
	<resultMap type="Blogger" id="BloggerResult">
		<result property="id" column="id"/>
		<result property="userName" column="userName"/>
		<result property="password" column="password"/>
	</resultMap>
</mapper> 
这里我就主要定义了一个结果集,后续自己开发时候select,delete等等就在这里面进行定义。

创建service层:

主要是事物层的逻辑实现。和dao层一样,创建service层接口以及它的实现类;

直接用注解方式:@Service("bloggerService");

在进行创建controller层;用于访问前台页面;

@Controller
@RequestMapping("/blogger")//映射路径
public class BloggerController {
	@Resource
	private BloggerService bloggerService;//注入
}

六:【自定义realm】

这个设计就是,验证当前登录的用户;

* 验证当前登录的用户

*/

	@Override
	protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
		// TODO Auto-generated method stub
		return null;
	}
}

七:【web.xml配置】

 <welcome-file-list>
 <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
 
 <!-- shiro过滤器定义 -->
	<filter> 
	 <filter-name>shiroFilter</filter-name> 
	 <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
 <init-param> 
 <!-- 该值缺省为false,表示生命周期由SpringApplicationContext管理,设置为true则表示由ServletContainer管理 --> 
 <param-name>targetFilterLifecycle</param-name> 
 <param-value>true</param-value> 
 </init-param> 
	</filter> 
	<filter-mapping> 
	 <filter-name>shiroFilter</filter-name> 
	 <url-pattern>/*</url-pattern> 
	</filter-mapping>
	
	
 <!-- Spring配置文件 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>
	<!-- 编码过滤器 -->
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<async-supported>true</async-supported>
		<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>
	<!-- Spring监听器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<!-- 添加对springmvc的支持 -->
	<servlet>
		<servlet-name>springMVC</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring-mvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
		<async-supported>true</async-supported>
	</servlet>
	<servlet-mapping>
 <servlet-name>springMVC</servlet-name>
 <url-pattern>*.do</url-pattern>
 </servlet-mapping>
	<servlet-mapping>
		<servlet-name>springMVC</servlet-name>
		<url-pattern>*.html</url-pattern>
	</servlet-mapping>
	
</web-app>

ok;随便写个jsp发布请求一下,这个框架就完事;大家好好配置练习一下;

有不懂和疑问随时问我;

项目jar包获取方法:点赞+关注+私信问我要就行了

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表