IDEA下SSM框架项目笔记

希望如果有同样问题的同志看到笔记之后能有所帮助,我的环境是SSM,IDE是IDEA

IDEA的run窗口

想看System.out.println的输出信息,找了半天,在View->Tool Windows->Run,下次注意

ajax回传404错误

原来是由于之前服务器报错,tomcat停掉了,然后还调试了半天,重启就好了

ajax回传500错误

500是服务器错误,也就是java的代码问题,代码如下

    @RequestMapping(value = "/dologin", method = {RequestMethod.POST })
    @ResponseBody
    public Userdologin(@RequestBody User user) {
        return user;
    }

ajax上传的json数据为

{userName: "test", pswd: "123456"}

User实体类的定义如下

package entity;

public class User {
    private Integer id;
    private String userName;
    private String pswd;
    private String userType;
    private Double initValue;
    private String walletAddr;
    public User(Integer id, String userName, String pswd, String userType, Double initValue, String walletAddr) {
        this.id = id;
        this.userName = userName;
        this.pswd = pswd;
        this.userType = userType;
        this.initValue = initValue;
        this.walletAddr = walletAddr;
    }
    public Integer getId() {
        return id;
    }
    public String getUserName() {
        return userName;
    }
    public String getPswd() {
        return pswd;
    }
    public String getUserType() {
        return userType;
    }
    public Double getInitValue() {
        return initValue;
    }
    public String getWalletAddr() {
        return walletAddr;
    }
}

但是User的对象结构不只有userName和pswd两个属性,所以这样的注入是失败的,故而报错500,解决方案是使用String来传,最后修改的demo如下,是可以成功运行的

    @RequestMapping(value = "/dologin", method = {RequestMethod.POST })
    @ResponseBody
    public String dologin(@RequestBody String param) {
        Map maps = JSON.parseObject(param);
        System.out.println("这个是用JSON类的parseObject来解析JSON字符串!!!");
        for (Object obj : maps.keySet()){
            System.out.println("key为:"+obj+"值为:"+maps.get(obj));
        }
        return "ok";
    }

mybaits多参数查询

网上给了三种方式,我用了最后一种推荐的方式,清晰易懂,代码如下:

UserMapper.java

 User selectByUserPswd(@Param("userName")String userName, @Param("pswd")String pswd);

UserMapper.xml

 <select id="selectByUserPswd" resultMap="BaseResultMap">
    select * from user where user_name = #{userName,jdbcType=VARCHAR} and pswd = #{pswd,jdbcType=VARCHAR}
  </select>

UserService.java

 public User getUser(String userName, String pswd){
     return userMapper.selectByUserPswd(userName,pswd);
 }

UserAction.java

    @RequestMapping(value = "/dologin", method = {RequestMethod.POST })
    @ResponseBody
    public User dologin(@RequestBody String param) {
        Map maps = JSON.parseObject(param);
        User result = userService.getUser((String)maps.get("userName"), (String)maps.get("pswd"));
        return result;
    }

chrome中的debugger工具

chrome中除了有单步调试的js的工具以外,还可以使用debugger来进行断点,方法很简单,在要停的js文件中的位置加上debugger;语句就行了,打开chrome之后打开开发者工具就会自动断点,如果不打开的话就会正常执行
参考资料:http://bbs.fanruan.com/thread-65003-1-1.html

IntelliJ IDEA2016 + tomcat 设置热部署

参考资料:http://blog.youkuaiyun.com/miaoy220/article/details/53450179
其中的On ‘Update’ action那里被我改成了Redeploy,即便是这样,对于html,js等静态文件通常改了之后要刷新几遍才会被更新,而java文件甚至常常需要按tomcat的redeploy才能被更新,但是也很好了,毕竟比restart节省了很多时间

JSTL无法在项目中使用

首先的原因就是maven中没有引入包,所以要配置maven依赖,代码如下:

<dependency> 
    <groupId>jstl</groupId> 
    <artifactId>jstl</artifactId> 
    <version>1.2</version> 
</dependency> 

<dependency> 
    <groupId>taglibs</groupId> 
    <artifactId>standard</artifactId> 
    <version>1.1.2</version> 
</dependency> 

参考资料:http://wj196.iteye.com/blog/787566
但是配置了之后还是不好用,这个时候reimport一下就行了,也就是在pom.xml文件上右键,Maven->Reimport,这样就好了

spring mvc无法引入静态模块

首先做一个过滤,让静态文件可以被识别
修改web.xml文件,增加对静态资源的url映射,要加在org.springframework.web.servlet.DispatcherServlet的前面
比如js和css文件

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
</servlet-mapping>

css和js等文件不要放到WEB-INF下面,要放到webapp里面,如图,我的结构是这样的
这里写图片描述
然后在mvc-dispatcher-servlet.xml上面做名字和路径的映射:

    <!--html调用css,js,images等静态资源的路径使用方法-->
    <mvc:resources location="/images/" mapping="/images/**"/>
    <mvc:resources location="/js/" mapping="/js/**"/>
    <mvc:resources location="/css/" mapping="/css/**"/>

之后在html或者jsp文件里使用/images/a.jpg这样的方式就能访问到webapp下images文件夹里的图片了,比如我的html代码

<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>医保账户</title>
<link href="/css/home.css" rel="stylesheet" type="text/css" media="all">
<link href="/css/css.css" rel="stylesheet" type="text/css" media="all">
<script type="text/javascript" src="/js/jquery.js"></script>
</head>
<body>
<!--top-->
<div class="top">
    <div class="box">
        <a href="home" class="return"><img src="/images/return.png"></a>
        个人信息    
    </div>
</div>
</body>
</html>

springMVC使用html做视图

spring mvc的默认配置是识别jsp文件的,但是不识别html,默认配置如下:

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/" />
        <property name="suffix" value=".jsp" />
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
    </bean>

所以在controller方法中返回值之后都默认去定位到jsp文件,即便是把jsp改成html也无法定位到html,controller中的代码如下:

    @RequestMapping("/home")
    public ModelAndView home() {
        ModelAndView mav = new ModelAndView();
        // 放入jsp路径,配置后缀是jsp,所以默认访问home.jsp
        mav.setViewName("home");
        return mav;
    }

为了让他能够识别html,将配置改成了

    <bean  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="order" value="10"></property>
        <property name="prefix" value="/WEB-INF/pages/"></property>
        <property name="contentType" value="text/html"></property>
    </bean>

controller中的代码如下:

    @RequestMapping("/home")
    public ModelAndView home() {
        ModelAndView mav = new ModelAndView();
        // 需要加html后缀
        mav.setViewName("home.html");
        return mav;
    }

上面两个代码就能够成功的定位到html文件了

js对象转换成json对象

明明是很简单的代码,网上却给出了一堆字符串拼接的,真是醉了,最简洁易懂的代码如下

var jsonData = {};
jsonData.MainCmdID = 1;
jsonData.SubCmdID = 1;
var toStr = JSON.stringify(jsonData);
alert(toStr);

json转Map对象

有一个阿里巴巴的包,叫做fastjson,我用的是这个
调用函数一句就行了

import com.alibaba.fastjson.JSON;//导入的包


String param = {"username":"test","password":"123456"};
Map maps = JSON.parseObject(param);

欢迎加入中科院开源软件自习室

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值