Intellij idea springMVC中idea 调试jsp页面面进入控制层,访问路径前面不加项目名称,详情看图

相关软件:
1、Intellij IDEA14:
3、Tomcat(apache-tomcat-6.0.43):
4、MySQL(mysql-essential-5.1.68-winx64):/s/1gdZZgMB
5、Spring 3.x :&
6:相关Lib打包:/s/1slSmWqx
案例来自于《Spring 3.X 企业应用开发实战》 Chapter2 :&
1、创建一个普通的Java Web项目
Intellij IDEA创建一个普通的Java Web项目可参考:
项目名称为:SpringProject,Module名称为SpringCh2LoginModule。
2、手动创建以下目录
在Module下先创建一个文件夹为test,与src同级,然后右键,选择Mark Directory As,再选择Test Sources Root即可。&
3、导入相关的jar包
我把Spring开发要用到的jar包都弄成一个文件夹了,把里面所有的jar包复制然后黏贴到项目里面的lib目录下即可。
4、配置项目结构
打开Project Structure(Ctrl+Alt+Shift+S),选择Modules,选择Paths,选择Use module compile output path,两个都选择为刚刚创建的classes文件夹。
接着看一下Modules下的Dependencies是否已经加入lib文件夹,如果没有,点击右边的&+&号,选择&Jars&or Directories &,选择刚刚创建的lib文件夹。如果已经加入则提个勾,表示选中。最后OK即可。
5、创建库表
我的数据库用户名为root,密码为123456。
创建库表的SQL语句可参见:\chapter2\schema。
创建数据库sampledb:
创建表t_user:
&创建表t_login_log:
插入数据:
6、构建主体层
用户领域对象:User
package com.yyq.
import java.io.S
import java.util.D
public class User implements Serializable {
private int userId;
private String userN
private int
private String lastIp;
private Date lastV
public User() {
public int getUserId() {
return userId;
public void setUserId(int userId) {
this.userId = userId;
public String getUserName() {
return userN
public void setUserName(String userName) {
this.userName = userN
public String getPassword() {
public void setPassword(String password) {
this.password =
public int getCredits() {
public void setCredits(int credits) {
this.credits =
public String getLastIp() {
return lastIp;
public void setLastIp(String lastIp) {
this.lastIp = lastIp;
public Date getLastVisit() {
return lastV
public void setLastVisit(Date lastVisit) {
this.lastVisit = lastV
登录日志领域对象:LoginLog.java
package com.yyq.
import java.io.S
import java.util.D
public class LoginLog implements Serializable {
private int loginLogId;
private int userId;
private Date loginD
public LoginLog() {
public int getLoginLogId() {
return loginLogId;
public void setLoginLogId(int loginLogId) {
this.loginLogId = loginLogId;
public int getUserId() {
return userId;
public void setUserId(int userId) {
this.userId = userId;
public String getIp() {
public void setIp(String ip) {
public Date getLoginDate() {
return loginD
public void setLoginDate(Date loginDate) {
this.loginDate = loginD
7、构建持久层
package com.yyq.
import com.yyq.domain.U
import org.springframework.beans.factory.annotation.A
import org.springframework.jdbc.core.JdbcT
import org.springframework.jdbc.core.RowCallbackH
import org.springframework.stereotype.R
import java.sql.ResultS
import java.sql.SQLE
@Repository
public class UserDao {
@Autowired
private JdbcTemplate jdbcT
public UserDao() {
System.out.println("UserDao");
public int getMatchCount(String userName, String password) {
String sqlStr = "select count(*) from t_user where user_name = ? and password = ?";
return jdbcTemplate.queryForInt(sqlStr, new Object[]{userName, password});
public User findUserByUserName(final String userName) {
String sqlStr = " SELECT user_id,user_name,credits "
+ " FROM t_user WHERE user_name =? ";
final User user = new User();
jdbcTemplate.query(sqlStr, new Object[]{userName},
new RowCallbackHandler() {
public void processRow(ResultSet rs) throws SQLException {
user.setUserId(rs.getInt("user_id"));
user.setUserName(userName);
user.setCredits(rs.getInt("credits"));
public void updateLoginInfo(User user) {
String sqlStr = " UPDATE t_user SET last_visit=?,last_ip=?,credits=? "
+ " WHERE user_id =?";
jdbcTemplate.update(sqlStr, new Object[]{user.getLastVisit(),
user.getLastIp(), user.getCredits(), user.getUserId()});
LoginLogDao:
package com.yyq.
import com.yyq.domain.LoginL
import org.springframework.beans.factory.annotation.A
import org.springframework.jdbc.core.JdbcT
import org.springframework.stereotype.R
@Repository
public class LoginLogDao {
@Autowired
private JdbcTemplate jdbcT
public void insertLoginLog(LoginLog loginLog) {
String sqlStr = "INSERT INTO t_login_log(user_id,ip,login_datetime) "
+ "VALUES(?,?,?)";
Object[] args = {loginLog.getUserId(), loginLog.getIp(),
loginLog.getLoginDate()};
jdbcTemplate.update(sqlStr, args);
package com.yyq.
import com.yyq.dao.LoginLogD
import com.yyq.dao.UserD
import com.yyq.domain.LoginL
import com.yyq.domain.U
import org.springframework.beans.factory.annotation.A
import org.springframework.stereotype.S
public class UserService {
@Autowired
private UserDao userD
@Autowired
private LoginLogDao loginLogD
public boolean hasMatchUser(String userName, String password){
int matchCount = userDao.getMatchCount(userName,password);
return matchCount & 0;
public User findUserByUserName(String userName) {
return userDao.findUserByUserName(userName);
public void loginSuccess(User user) {
user.setCredits( 5 + user.getCredits());
LoginLog loginLog = new LoginLog();
loginLog.setUserId(user.getUserId());
loginLog.setIp(user.getLastIp());
loginLog.setLoginDate(user.getLastVisit());
userDao.updateLoginInfo(user);
loginLogDao.insertLoginLog(loginLog);
9、配置applicationContext.xml文件
在src目录下创建一个applicationContext.xml文件,点中src,右键,选择New -& File &-&输入applicationContext.xml,确认即可。
&?xml version="1.0" encoding="UTF-8"?&
&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:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"&
&context:component-scan base-package="com.yyq.dao"/&
&context:component-scan base-package="com.yyq.service"/&
&bean id="dataSource" class="mons.dbcp.BasicDataSource"
destroy-method="close"
p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3306/sampledb"
p:username="root"
p:password="123456"/&
&bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"
p:dataSource-ref="dataSource"/&
&bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource"/&
&aop:config proxy-target-class="true"&
&aop:pointcut id="serviceMethod" expression="execution( * com.yyq.service..*(..))"/&
&aop:advisor pointcut-ref="serviceMethod" advice-ref="txAdvice"/&
&/aop:config&
&tx:advice id="txAdvice" transaction-manager="transactionManager"&
&tx:attributes&
&tx:method name="*"/&
&/tx:attributes&
&/tx:advice&
10、编写单元测试
这里使用Junit4编写单元测试,在test文件夹下创建类com.yyq.TestUserService。
package com.
import com.yyq.domain.U
import com.yyq.service.UserS
import org.junit.T
import org.junit.runner.RunW
import org.springframework.beans.factory.annotation.A
import org.springframework.test.context.ContextC
import org.springframework.test.context.junit4.SpringJUnit4ClassR
import java.util.D
import static org.junit.Assert.*;
* Created by gao on 16-4-28.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/applicationContext.xml"})
public class TestUserService {
@Autowired
private UserService userS
public void hasMatchUser(){
boolean b1 = userService.hasMatchUser("admin","123456");
boolean b2 = userService.hasMatchUser("admin","1111");
assertTrue(b1);
assertTrue(!b2);
public void testFindUserByUserName() {
User user = userService.findUserByUserName("admin");
assertEquals(user.getUserName(), "admin");
public void testAddLoginLog() {
User user = userService.findUserByUserName("admin");
user.setUserId(1);
user.setUserName("admin");
user.setLastIp("192.168.12.7");
user.setLastVisit(new Date());
userService.loginSuccess(user);
11、运行测试用例
把鼠标放在某个测试方法,比如hasMatchUser()方法,右键,选择Run 'hasMatchUser()',即可运行特定的方法。当然,也可以把鼠标放在类名那里,右键,选择&TestUserService&,即将类里面的所有方法都运行一遍。
看到&All Tests Passed&,表示全部通过啦~~~
12、控制层
在src目录下创建包com.yyq.service,在该包下创建类LoginCommand和类LoginController。
LoginCommand:
package com.yyq.
* Created by gao on 16-4-28.
public class LoginCommand {
private String userN
public String getPassword() {
public void setPassword(String password) {
this.password =
public String getUserName() {
return userN
public void setUserName(String userName) {
this.userName = userN
LoginController:
package com.yyq.
import com.yyq.domain.U
import com.yyq.service.UserS
import org.springframework.beans.factory.annotation.A
import org.springframework.stereotype.C
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.servlet.ModelAndV
import javax.servlet.http.HttpServletR
import java.util.D
@Controller
public class LoginController {
@Autowired
private UserService userS
@RequestMapping(value = "/index.html")
public String loginPage(){
return "login";
@RequestMapping(value = "/loginCheck.html")
public ModelAndView loginCheck(HttpServletRequest request,LoginCommand loginCommand){
boolean isValidUser =
userService.hasMatchUser(loginCommand.getUserName(),
loginCommand.getPassword());
if (!isValidUser) {
return new ModelAndView("login", "error", "用户名或密码错误。");
User user = userService.findUserByUserName(loginCommand
.getUserName());
user.setLastIp(request.getLocalAddr());
user.setLastVisit(new Date());
userService.loginSuccess(user);
request.getSession().setAttribute("user", user);
return new ModelAndView("main");
13、编写JSP视图页面
login.jsp:
&%@ page language="java" contentType="text/ charset=UTF-8" pageEncoding="UTF-8" %&
&%@ taglib uri="/jsp/jstl/core" prefix="c" %&
&title&宝宝淘论坛登录&/title&
&c:if test="${!empty error}"&
&font color="red"&&c:out value="${error}" /&&/font&
&form action="&c:url value="/loginCheck.html"/&" method="post"&
&input type="text" name="userName"&
&input type="password" name="password"&
&input type="submit" value="登录" /&
&input type="reset" value="重置" /&
main.jsp:
Created by IntelliJ IDEA.
Date: 16-3-17
Time: 下午8:42
To change this template use File | Settings | File Templates.
&%@ page contentType="text/charset=UTF-8" language="java" %&
&meta http-equiv="Content-Type" content="text/ charset=ISO-8859-1"&
&title&宝宝淘论坛&/title&
${user.userName},欢迎您进入宝宝淘论坛,您当前积分为${user.credits};
14、配置Spring MVC框架
1)修改web.xml文件
&?xml version="1.0" encoding="UTF-8"?&
&web-app xmlns="/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="/xml/ns/javaee
/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"&
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath:applicationContext.xml&/param-value&
&/context-param&
&listener&
&listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&
&/listener&
&servlet-name&baobaotao&/servlet-name&
&servlet-class&org.springframework.web.servlet.DispatcherServlet&/servlet-class&
&load-on-startup&2&/load-on-startup&
&/servlet&
&servlet-mapping&
&servlet-name&baobaotao&/servlet-name&
&url-pattern&*.html&/url-pattern&
&/servlet-mapping&
&/web-app&
2)在WEB-INF下创建一个文件baobaotao-servlet.xml
&?xml version="1.0" encoding="UTF-8"?&
&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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"&
&!-- 扫描web包,应用Spring的注解 --&
&context:component-scan base-package="com.yyq.controller"/&
&!-- 配置视图解析器,将ModelAndView及字符串解析为具体的页面 --&
&bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:viewClass="org.springframework.web.servlet.view.JstlView"
p:prefix="/"
p:suffix=".jsp"/&
15、配置Tomcat容器,运行程序
Run -& Edit Configuration -& Run/Debug Configurations -& 点击"+"号 -& 选择Tomcat -& 选择Local -& 点击Deployment -& 点击&+& 号 -& 选择SpringCh2LoginModule:war exploded-&OK
界面显示:
用户名:admin,密码:123456
登录成功进入主界面。
16、项目结构图
阅读(...) 评论()2771人阅读
intellij idea(46)
springMVC(2)
maven(9)
使用这个IntelliJ IDEA创建一个简单的Java web maven项目,我在前面的文章里面已经示范过了。
主要是告诉你:
怎么使用IntelliJ IDEA编辑器;怎么自己新建tomcat服务器;怎么把服务器跑起来;
简单的了解一下什么是maven,什么是仓库,怎么配置仓库位置,如何使用国内的镜像仓库。等等吧。
那个算是最简单的框架啦,基本所有的web项目都是这么个套路,
现在,也就对那个简单的项目稍微扩展一下,带上springMVC框架,当然了,虽然带上了springMVC框架,也还是很简单的一个Java web maven项目。
九层之台,起于垒土。还是一步步学习,慢慢的来嘛。
至于前面的新建个web项目的步骤,我就不赘述了,跟前面那个简单web例子是一模一样的。
就说下不同的地方:
先看下面的2个项目的目录不同,除了你要新建这么几个目录以外,还得简单几步的设置。
至于为什么这么做,看下面链接的解释:
好,准备工作就绪,那么就开干了。看代码,至于整个项目的目录结构,在上面的对比图里面已经看过了,这就不再重复上图啦。
大致看一下,整个简单的项目都用到了什么jar包,也就是了解下maven依赖。
最好看下上面说的那个简单Java web maven项目的那一篇文章,因为,里面说了如何使用国内的镜像仓库,maven下载jar包的时候,速度就快很多。
先是pom.xml文件,如下:
pom.xml文件中包含spring mvc依赖及为编写jsp文件提供支持的taglib相关依赖
&project xmlns=&http://maven.apache.org/POM/4.0.0& xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xsi:schemaLocation=&http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&&
&modelVersion&4.0.0&/modelVersion&
&groupId&lxk&/groupId&
&artifactId&springMVC&/artifactId&
&packaging&war&/packaging&
&version&1.0-SNAPSHOT&/version&
&name&springMVC Maven Webapp&/name&
&url&http://maven.apache.org&/url&
&properties&
&org.springframework-version&4.1.4.RELEASE&/org.springframework-version&
&/properties&
&dependencies&
&!-- Spring MVC support --&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-webmvc&/artifactId&
&version&${org.springframework-version}&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-web&/artifactId&
&version&${org.springframework-version}&/version&
&/dependency&
&!-- Tag libs support for view layer --&
&dependency&
&groupId&javax.servlet&/groupId&
&artifactId&jstl&/artifactId&
&version&1.2&/version&
&scope&runtime&/scope&
&/dependency&
&dependency&
&groupId&taglibs&/groupId&
&artifactId&standard&/artifactId&
&version&1.1.2&/version&
&scope&runtime&/scope&
&/dependency&
&!-- junit --&
&dependency&
&groupId&junit&/groupId&
&artifactId&junit&/artifactId&
&version&4.12&/version&
&scope&test&/scope&
&/dependency&
&/dependencies&
&finalName&springMVC&/finalName&
&/project&
因为这个项目太简单,所以,这个pom.xml文件里面的配置也很简单。可以参考下面链接的一篇文章了解到基本所有的标签的作用。
哎,不要嫌啰嗦,你可以全文搜索你要了解的标签,又不是让你全部看一遍。对不对嘛。我就不解释标签的作用啦。
因为我在之前,转载过一篇,关于springmvc的各个jar包之间的maven依赖关系,具体链接如下:
此文中详细描述了各个jar包之间的依赖关系,那么,我上面的pom.xml里面对springmvc的依赖导入,就有一个是多余的啦,就那个spring-web,这个jar包啦。spring-webmvc这个jar包是依赖spring-web的,所以,maven会自动添加这个jar的,所以,你就不需要自己声明引入jar依赖啦。
前提是你知道他们之间的关系,你才知道哪个可以写,哪个不用写。一般我看到的,基本都是随意的引入,不需要考虑,那样的话,你的pom.xml文件里面的dependency标签会很多,起码,我看很多人在示范这个springmvc框架,构建项目的时候,pom文件可是相当可观的,估计自己都不知道引入那么多有啥用。
所以,你可以把上面的那个多余的jar包给删除了。项目还是会正常的跑起来的。
再看一下,所有依赖的jar包,都使用了些什么jar包。
下面就该web.xml文件的配置了
&web-app id=&WebApp_ID& version=&2.4&
xmlns=&/xml/ns/j2ee&
xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xsi:schemaLocation=&/xml/ns/j2ee
/xml/ns/j2ee/web-app_2_4.xsd&&
&display-name&Archetype Created Web Application&/display-name&
&servlet-name&spring&/servlet-name&
&servlet-class&org.springframework.web.servlet.DispatcherServlet&/servlet-class&
&init-param&
&param-name&contextConfigLocation&/param-name&
&param-value&/WEB-INF/spring-servlet.xml&/param-value&
&/init-param&
&load-on-startup&1&/load-on-startup&
&/servlet&
&servlet-mapping&
&servlet-name&spring&/servlet-name&
&url-pattern&/&/url-pattern&
&/servlet-mapping&
&/web-app&
在配置中设置spring-servlet.xml的路径
& & & & &init-param&
& & & & & & &param-name&contextConfigLocation&/param-name&
& & & & & & &param-value&/WEB-INF/spring-servlet.xml&/param-value&
& & & & &/init-param&
本来上面的这个是可以不用配置的,默认在/WEB-INF/自己找XXX--servlet.xml对应的配置文件xxx对应为servlet的名字,我们也可以如上自己指定,
然后是servlet.xml的配置内容。
&beans xmlns=&http://www.springframework.org/schema/beans&
xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xmlns:mvc=&http://www.springframework.org/schema/mvc&
xmlns:context=&http://www.springframework.org/schema/context&
xsi:schemaLocation=&http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd&&
&!-- 开启spring的扫描注入,使用如下注解 --&
&!-- @Component,@Repository,@Service,@Controller--&
&context:component-scan base-package=&com.lxk&/&
&!-- 开启springMVC的注解驱动,使得url可以映射到对应的controller --&
&mvc:annotation-driven /&
&!-- 视图解析 --&
&bean class=&org.springframework.web.servlet.view.InternalResourceViewResolver&&
&property name=&prefix& value=&/WEB-INF/views/&/&
&property name=&suffix& value=&.jsp&/&
&/beans&&mvc:annotation-driven /& 这个默认就给容器注入了下面的2个bean,所以就不需要再次重复注入了
下面第一个行使得自动映射到对应的controller类上,再下一行是映射到方法上,缺一不可。
&bean class=&org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping&/&
&bean class=&org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter&/&
这个地方,有的人是不知道的。我看有的人的例子,这个地方就写重复啦。
配置基本完成,从发出请求到controller,然后处理完,得到数据之后,再返回到浏览器页面上,这么个流程。
先看controller的代码。
package com.lxk.
import com.lxk.service.StudentS
import org.springframework.stereotype.C
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.servlet.ModelAndV
import javax.annotation.R
* Created by lxk on
@Controller
@RequestMapping(&student&)
public class StudentController {
@Resource(name = &studentService&)
private StudentService studentS
//@ResponseBody(之前我因为加了这个注解,导致页面访问一直是406错误,注释了就好啦,具体为啥我暂时还不知道)
@RequestMapping(value = &/getAllStudent&, method = RequestMethod.GET)
public ModelAndView getAllStudent() {
ModelAndView mav = new ModelAndView();
mav.setViewName(&studentDisplay&);
mav.addObject(&students&, studentService.getAllStudent());
然后是service
package com.lxk.
import com.lxk.dao.StudentD
import com.lxk.model.S
import org.springframework.stereotype.S
import javax.annotation.R
import java.util.L
* Created by lxk on
@Service(&studentService&)
public class StudentService {
@Resource(name = &studentDao&)
private StudentD
public List&Student& getAllStudent() {
return dao.findAll();
}然后是dao,这个地方,为了简单,没有去访问数据库,而是直接返回了个list集合。还请见谅。
package com.lxk.
import com.lxk.model.S
import org.springframework.stereotype.R
import java.util.ArrayL
import java.util.L
* Created by lxk on
@Repository(&studentDao&)
public class StudentDao {
public List&Student& findAll() {
List&Student& all = new ArrayList&Student&();
all.add(new Student(&1&, &tom&, 18, true));
all.add(new Student(&2&, &cat&, 28, true));
all.add(new Student(&3&, &lxk&, 18, true));
all.add(new Student(&4&, &cms&, 18, true));
}最后,是我们使用的Java model bean的代码
package com.lxk.
import java.io.S
* Created by lxk on
public class Student implements Serializable {
public Student() {
public Student(String id, String name, int age, boolean sex) {
this.name =
this.age =
this.sex =
//getter and setter
}这地方有需要注意的地方:你重写了一个model bean的构造方法,那么他的无参构造函数就不见了,所以,你最好。
哦,不,为了省去不必要的麻烦,你必须给他加上默认的构造函数。因为,在这使用的简单,请求都是不带参数的。
项目复杂了,是会带model bean类型的参数的,那么可能就会因为对象初始化失败而报错。可能你排错都得整半天,都不知道错在哪,一直请求400错误码。
参考链接:
现在后台完事了,那么就该前台的jsp代码了,不要嫌弃,为什么还在使用jsp当前台,学习嘛。
&%@ page language=&java& contentType=&text/ charset=UTF-8& pageEncoding=&UTF-8&%&
&%@ taglib prefix=&c& uri=&/jsp/jstl/core&%&
&%@ taglib prefix=&fmt& uri=&/jsp/jstl/fmt&%&
&meta http-equiv=&Content-Type& content=&text/ charset=utf-8& /&
&title&Spring MVC Hello World&/title&
&h2&All Students in System&/h2&
&table border=&1&&
&th&Id&/th&
&th&Name&/th&
&th&Age&/th&
&th&Sex&/th&
&c:forEach var=&student& items=&${students}&&
&td&${student.id}&/td&
&td&${student.name}&/td&
&td&${student.age}&/td&
&td&${student.sex}&/td&
&/c:forEach&
&/html&这个jsp页面也是有个地方需要注意的,对就是乱码的问题。因为你不设置一下jsp页面的编码格式,汉字就会显示为???很多个问号。
我看其他人做测试的时候,都没遇到,也就不会考虑这个问题啦。因为湿胸我出过这个bug,所以,深切知道这个问题的重要性,
谁让计算机不是中国人发明的呢,所以,就会莫名其妙的出现编码问题的bug,比如我最近的编码bug就是log4j日志输出到文件所有汉字都变问号了。
&%@ page language=&java& contentType=&text/ charset=UTF-8& pageEncoding=&UTF-8&%&
另外,jsp页面上使用的就是jstl标签啦。也就是个简单的foreach循环,雷同Java的foreach循环。简单理解一下就OK拉。
现在,前后台的代码,算是都敲完了,该配置个tomcat服务器,跑起来这个Java web项目。具体配制流程,我也不上图啦,我在此文一开始的时候,附的那个链接
详细的记录了如何配置启动一个tomcat。当你按照那个配置完成之后,直接启动tomcat,会跳到hello world页面,然后你再输入如下URL
http://localhost:8080/lxk/student/getAllStudent
就可以看到如下的执行结果啦。
至此,这个算是极其简单的spring mvc项目算是从头到尾的示范完了。遗憾的是,这个项目还是太简单了,还是么有使用到数据库,比如mongo DB。
也没有使用到JavaScript,jQuery,ajax,而且后台代码也是超级简单。也没有使用到配置文件,而且使用的前台页面也是不符合实际开发要求的。
所以,还是不行的。
所以,还是可以继续复杂起来的。路漫漫其修远兮吾将上下而求索。留待湿胸我慢慢整理吧。
虽然这一篇,还是水的不行。当然,还是希望各位,不嫌弃麻烦的,点个赞啥的。也是极好的。
后面我又多方试探,发现,pom.xml文件还是可以继续精简的。那个依赖可以直接只要下面2个依赖就可以了。
其他的都是多余的。
&dependencies&
&!-- Spring MVC support --&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-webmvc&/artifactId&
&version&${org.springframework-version}&/version&
&/dependency&
&!-- Tag libs support for view layer --&
&dependency&
&groupId&javax.servlet&/groupId&
&artifactId&jstl&/artifactId&
&version&1.2&/version&
&scope&runtime&/scope&
&/dependency&
&/dependencies&就这2个jar包就够用了。
想不想看看,现在这个maven项目的所有jar包的依赖关系呢?
好,这个就是现在的修改过,去掉多余的jar包之后的maven jar 包依赖关系图。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:893357次
积分:10838
积分:10838
排名:第1410名
原创:285篇
转载:80篇
评论:391条
交流群:好像不需要吧 我扣扣: 我邮箱: 我格言:&习惯就好&坑了多少人 暂时在:帝都 曾工作:成都 曾工作:郑州 我爱好:海贼王 我爱好:英雄杀 我家乡:济源市 我爱好:写bug 求求求:有问题就留言吧 为啥呢:大师兄是一直在维护的
你觉得本博文对你有用吗
? 有用,那就请点赞留言。: 暂时没用,也请不要踩。
文章:47篇
阅读:306288
(14)(9)(15)(22)(16)(11)(13)(31)(34)(31)(54)(14)(27)(4)(3)(16)(16)(11)(5)(7)(4)(5)(6)(3)

我要回帖

更多关于 idea无法新建jsp页面 的文章

 

随机推荐