最近在做web作业,结构功能比较简单,这边记录一下。
1.创建一个web工程包,包内的格式是这样的
Welcome
——Java Resources
——src
——com.ssm.controller
——com.ssm.dao
——com.ssm.entity
——com.ssm.intercept
——com.ssm.service
——com.ssm.serviceImpl
——config
——mappers
——jdbc.properties[负责连接数据库的相关文件]
——WebContent
——common
——css
——fonts
——js
——img
——layer
——META-INF
——WEB-INF
——.jsp/.html[我喜欢把文件放在这(^-^)]
2.需要安装好tomcat和jdk,这里就不多说了,不过要记得查看一下tomcat的设置
3.tomcat初始设定的开启时间很短,要自己手动更改延长它
4.后端LoginController控制器中注释可以配合前端的ajax使用,cue一下流程
后端
@Controller
public class LoginController{
@Autowired
public UserService userService;
@ResponseBody
@RequestMapping("Login.do")
public String Login(String username, String password, HttpServletRequest request, HttpServletResponse respone,
HttpSession session) throws IOException {
return userService.findUser(username, password);
}
}
前端
<script type="text/javascript">
function login(){
$.ajax({
type:"post",
url:"Login.do",
data:$("#myForm").serialize(),
success:function(result){
layer.msg(result),setTimeout(
function(){
if(result=="登陆成功!")
window.location="home.jsp";
else
window.location="Login.jsp";
},1000
);
}
});
}
</script>
5.控制器用到的方法要在service中定义
public interface UserService {
public String findUser(String username, String password);
}
6.控制器将会将参数运输到serviceImpl中,个人认为serviceImpl实现了service中定义(^-^)
@Service("UserService")
public class UserServiceImpl implements UserService{
@Autowired
private userDao userdao;
@Override
public String findUser(String username,String password) {
Map<String,Object> map = new HashMap<String,Object>();
map.put("username", username);
map.put("password", password);
Map<String,Object> map2 = userdao.findUser(map);
System.out.println(map2);
if(map2!=null) {
return "登陆成功!";
}else {
return "用户名或密码错误!";
}
}
}
7.接下来需要通过Dao方法定义,然后在mapper中实现对数据库的操作
public interface userDao {
String findUser(String username, String password);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="com.ssm.dao.userDao">
<select id="findUser" parameterType="map" resultType="map">
select * from users where username=#{username} and password=#{password} and status!=-1;
</select>
</mapper>
8.这里插播一条jdbc.properties,url带上characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull能有效避免中文乱码
driverClassName=com.mysql.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/abc?characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
username=root
password=root
dataSource=org.springframework.jdbc.datasource.DriverManagerDataSource
acquireIncrement=3
idleConnectionTestPeriod=60
initialPoolSize=5
maxIdleTime=60
maxPoolSize=30
maxStatementsPerConnection=10
numHelperThreads=3
9.当导入其他人的工程时,需要注意Java Build Path这边有没有tomcat红叉叉报错
10.很多时候导入他人工程运行时报错,要么是代码中路径不同,要么是jar包不一样
11.jsp想要用el表达式,一定要带上这位小朋友
<%@ page isELIgnored="false" %>
12.还有一些奇奇怪怪,但是看起来在jsp中很固定的头
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ page isELIgnored="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="./common/js/jquery-1.8.0.min.js"></script>
<script src="./common/layer/layer.js"></script>
<script src="./common/js/jquery.min.v3.js"></script>
<script src="./common/js/jquery.circlechart.js"></script>
13.这个方法可以在<script>区快速跳转
function returnfunction() {
window.location="Login.jsp";
}
14.在输入多个值的情况下,它可以取到<form>表单的输入值,但是同时还要搭配着后端使用
var username = $("#username").val();
public interface userDao {
boolean changeInform(@Param("username")int username, @Param("sex")String sex,@Param("job")String job);
}
15.这一条跟很楼上很像,但是它取的是session值
${username}
16.button的onclick一定不要漏了个c,并且人家是有引号的
<button id="login_1" type="button" value="登陆" onclick="login()">登陆</button>
17.关于css,id是唯一,class不唯一,两者前面都要带点,如果只是标签页就不用带点
button{
font-size:14px;
}
.login_1{
color:#fff;
}
18.除了之前搭配mapper进行数据库存取,还有一种很土但是很好用的方式进行数据库操作
public boolean setQusetion(int queserid, String content,String title) {
Connection con;
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/abc?characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull";
String user = "root";
String userpassword = "root";
boolean arestult = false;
try {
Class.forName(driver);
con = (Connection) DriverManager.getConnection(url,user,userpassword);
if(!con.isClosed()) {
System.out.println("Succeeded connecting to the Database!");
}
Statement statement = (Statement) con.createStatement();
String sql = "SELECT quesid FROM tagsques WHERE tagid=0";
ResultSet rs = statement.executeQuery(sql);
int id = 0;
while(rs.next()){
id = rs2.getInt("quesid");
System.out.println("quesid\t" + id);
}
rs.close();
con.close();
} catch(ClassNotFoundException e) {
System.out.println("Sorry,can`t find the Driver!");
e.printStackTrace();
} catch(SQLException e) {
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
return true;
}
19.要注意,在楼上这种方法中,不同的操作,获得rs的方法不一样,这里介绍两种:executeUpdate适合INSERT和UPDATE,executeQuery适合SELECT
String sql = "INSERT INTO tagsques(tagid,queserid,time,hot) values(0,"+queserid+",'"+time+"',"+hot+")";
int rs1 = statement.executeUpdate(sql);
String sql = "SELECT quesid FROM tagsques WHERE tagid=0";
ResultSet rs2 = statement.executeQuery(sql);
20.可以很方便地获得日期时间,格式自定
Calendar calendar= Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println(sdf.format(calendar.getTime()));
21.如果自己SQL语句不太好,在代码运行之前一定要区数据库用命令行实验一下