首先你需要的是把电脑的基本环境配置好,如果你用的windows系统:
1:jre环境
2:编译器:IntelliJ IDEA17
3:一个服务器,没有也行,在本机测试
4:Maven配置好
官方地址:http://maven.apache.org/download.cgi
选择Maven项目,勾选create from archetype,然后下一步输入GroupId和ArtifactId。
GroupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。
ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。
一般GroupID就是填com.leafive.test这样子。我也忘记这个GroupId后面哪里能用到了,但ArtifactID是项目打包后的名字,最好和项目同名。
添加的配置为 archetypeCatalog=internal 可以自动建立对应目录!
点击NEXT
点击NEXT
点击Finish后项目开始创建
点击右下角查看进去
6.maven web模板项目结构
同样在main下新建test测试文件夹,再在此文件夹下新建java测试源码文件夹和resource测试资源文件夹
也可以右键项目-选择Open Module Settings打开项目配置页面更改
7.配置依赖jar包 ,写在pom.xml文件下
1.mapper文件夹主要写mapper配置文件,访问数据库用的,一般一个类写一个mapper,里面有这个类的各种实现方法。
2.properties主要主要是各种配置文件,方便以后修改用。
3.spring这里把三个spring进行分类了
<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:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<context:property-placeholder location="classpath:properties/jdbc.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="maxActive" value="30" />
<property name="maxIdle" value="5" />
bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource">property>
<property name="mapperLocations" value="classpath*:/mapper/*.xml"/>
bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<property name="basePackage" value="akk.ssm.mapper"/>
bean>
beans>
<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:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<context:component-scan base-package="akk.ssm.service.impl"/>
beans>
<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:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource">property>
bean>
<tx:advice id="txAdvice">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="insert*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
<tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
tx:attributes>
tx:advice>
<aop:config>
<aop:advisor advice-ref="txAdvice" pointcut="execution(* akk.ssm.service.impl.*.*(..))"/>
aop:config>
beans>
4.springmvc
<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-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<mvc:annotation-driven >mvc:annotation-driven>
<context:component-scan base-package="akk.ssm.controller"/>
<mvc:default-servlet-handler/>
<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8value>
list>
property>
bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/" />
<property name="suffix" value=".html"/>
bean>
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8value>
<value>text/html;charset=UTF-8value>
list>
property>
bean>
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json; charset=UTF-8value>
<value>application/x-www-form-urlencoded; charset=UTF-8value>
list>
property>
bean>
mvc:message-converters>
mvc:annotation-driven>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<property name="maxUploadSize" value="32505856"/>
<property name="maxInMemorySize" value="4096"/>
bean>
beans>
5.这些xml文件配置完成后,就可以来进行具体的功能代码编写了,一般是controller和service和mapper同时编写的,我一般是先写controller然后遇到具体要写其他地方的时候再跳到其他地方写其他的,最后把controller完成,一个功能也就完成了!
controller类
@Controller
@RequestMapping("/login")
public class LoginController {
@Autowired//可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作
private UserService userService;
//查询用户名
@RequestMapping("/username")
public @ResponseBody//把返回类型转换为Json对象
GeResult login(HttpServletRequest request,
@RequestBody User user) throws Exception{
//System.out.println(user.getUsername()+"akk");
try {
HttpSession session = request.getSession();
User u = userService.findUserByusername(user.getUsername());//传到Mapper进行查找
//返回ajax响应
if (u==null){
return new GeResult(-1, "用户名错误");//返回类型为一个对象,里面包含错误提示信息,利用了封装的特性,使代码更加简洁
}else{
if(u.getPassword().equals(user.getPassword())){
session.setAttribute("user", u); //将用户存到session
return new GeResult(0, u); //登陆成功的返回
} else{
return new GeResult(-2, "密码错误");
}
}
} catch (Exception e) {
e.printStackTrace();
return new GeResult(-3, "系统异常");
}
}
//登出
@RequestMapping("/logout")
public String logout(HttpSession session) throws Exception{
//清除session
session.invalidate();
//返回到登录页面,springmvc有视图模式配置
return "login";
}
service类
//接口
public interface UserService {
public User findUserByusername(String username) ;
}
//impl实现
@Service("userService")
public class UserServiceimpl implements UserService{
@Autowired
private UserMapper userMapper;
public User findUserByusername(String username) {
return userMapper.findUserByusername(username);
}
}
mapper类
public interface NumMapper {
public void InsertNum(Num num);
public List FindNum();
}
UserMapper.xml
<mapper namespace="akk.ssm.mapper.UserMapper">
<select id="findUserByusername" parameterType="String" resultType="akk.ssm.pojo.User">
SELECT * FROM user WHERE username=#{ VALUE }
select>
mapper>
返回类GeResult具体代码,运用到封装特性!
*/
//这是一个返回信息的容器
/*
* 这才是泛型的正确写法,在前端指定数据类型,在后台用T不确定类型接收*/
public class GeResult {
private int status; //返回状态信息,0是成功,-1是失败
private String message; //返回的提示信息
private T u;
public GeResult(int status, String message){
this.status = status;
this.message = message;
}
public GeResult(int status, T u){
this.status = status;
this.u = u;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getU() {
return u;
}
public void setU(T u) {
this.u = u;
}
}
我会把源程序发布的,大家可以下载调试,应该比网上那些其他人的不完整或者有问题的代码好一点吧,至少我这里是成功的,因为我也是接触SSM尚浅,有写的不好的多多包涵,但给新手看足够了,特别是第一次看的新手,应该有了我这一套你不需要看别的博客了,跑起来足够了。
这个源代码不止是简单的登录页面,我是给别人写的一个小功能页面,还包括一个增添功能和查看功能,都是很简单的功能,初学者可以学习下。
主要是前端的跳转和AJAX传递不好写,因为属于前端的内容,反正这一套项目主要是把前端和后台分开,前端和后台的连接就只靠ajax的url,完全分离,因为听已经工作了的学长说,以后在公司项目,前端和后台都是分开的,而且代码要规范,一定要规范!可能我这一套还不够规范,hh但商业级别的我现在还在探索,以后会写了再分享!也希望那些大神多分享一些商业级别的代码规范,这样是利大于弊的,不要吝啬,给后人多一些台阶,会更好促进整个编程环境的发展=。=
下载地址:http://download.csdn.net/detail/qq_31783173/9828605