您的位置:首页 > 编程语言 > Java开发

练习搭建spring+springmvc+mybatis实现java web登陆

2016-09-26 15:15 1046 查看
  关于spring、springmvc、mybatis的相关资料需要提前了解一下。我也只是初学者,就不介绍了。

我使用的是idea 如果有用eclipse也是类似

第一步我是用的maven来引进外部包,它很好用省得你到处去下载包。

新建一个maven项目

修改pom.xml

<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>hp</groupId>
<artifactId>bookworm-spring</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>bookworm-spring Maven Webapp</name>
<url>http://maven.apache.org</url>

<properties>
<!-- spring版本号 -->
<spring.version>3.2.4.RELEASE</spring.version>
<!-- mybatis版本号 -->
<mybatis.version>3.2.4</mybatis.version>
<!-- log4j日志文件管理包版本 -->
<slf4j.version>1.6.6</slf4j.version>
<log4j.version>1.2.9</log4j.version>
</properties>

<dependencies>
<!-- spring核心包 -->
<!-- springframe start -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- springframe end -->

<!-- mybatis核心包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- mybatis/spring包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.29</version>
</dependency>
<!-- junit测试包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>

</dependency>
<!-- 阿里巴巴数据源包 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.2</version>
</dependency>

<!-- json数据 -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>

<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>

<!-- 日志文件管理包 -->
<!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>

<!--servlet 包-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<!-- log end -->
</dependencies>

<build>
<finalName>bookworm-spring</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<targetPath>${basedir}/target/classes</targetPath>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>

<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
</project>


上面整个文件我都贴出来了,如果大家使用记得请改项目名字,或者视情况粘贴。

下面是我整个项目的截图



大家创建项目时可以仿着创建。

controller 、dao、service、model这是springmvc的四个层,关于他们的介绍大家可以参考 点击打开链接

      conf存放的是springmvc spring mybatis 的配置文件 mapper存放的是xml格式的mapper它是mybatis范畴 点击打开链接

   

其实spring.xml spring-mvc.xml  spring_mybatis.xml 可以配置到一个里面。只不过这样为了清楚地看

我是用Mysql数据库 新建了一个userinfo表里面包括userid username password

下面我贴出controller 、dao、service、model里的代码,login是注册功能,其他的是注册功能

 controller层

package controller;

import model.UserInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import service.BookWormSvc;
import until.JsonUtil;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.Map;

/**
* Created by Administrator on 2016/9/22.
*/
@Controller
@RequestMapping("/")
public class bookwormController {

@Autowired
BookWormSvc bookWormSvc;

public void initUserSvc(){
ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"classpath:conf/spring.xml"
, "classpath:conf/spring_mybatis.xml"});
bookWormSvc = (BookWormSvc) context.getBean("bookWormSvcImpl");
}

@RequestMapping("index")
public String index(){return "login";}

@ResponseBody
@RequestMapping("login")
public String login(HttpServletRequest request)throws Exception{
initUserSvc();
String username = request.getParameter("username");
String password = request.getParameter("password");
UserInfo user = bookWormSvc.login(username,password);

//如果user不为空 则登陆成功。状态码:1表示登陆成功,0表示登录失败
if(user!=null){
HttpSession session=request.getSession();
session.setAttribute("userinfo",user);
return resultJson(1,null);
}else {
return resultJson(0,"名户名或密码不正确");
}
}

@ResponseBody
@RequestMapping("register")
public String register(HttpServletRequest request )throws Exception{
initUserSvc();
String username=request.getParameter("username");
String password=request.getParameter("password");
int registerResult=bookWormSvc.register(username,password);

if(registerResult==1){
return resultJson(1,"注册成功");
}else {
return resultJson(0,"注册失败");
}
}

@ResponseBody
@RequestMapping("selectUserInfoByusername")
public String selectUserInfoByusername(HttpServletRequest request)throws Exception{
initUserSvc();
String username=request.getParameter("username");
UserInfo user=bookWormSvc.selectUserInfoByusername(username);
if(user!=null){
return resultJson(1,user);
}else {
return resultJson(0,"改用户不存在");
}
}

//返回的json 一个是状态码,另一个是返回信息
public String resultJson(int resultCode,Object resultObject)throws Exception{
Map<String,Object> resultMap=new HashMap<String, Object>();
resultMap.put("resultCode",resultCode);
resultMap.put("resultObject",resultObject);
String result = JsonUtil.obj2json(resultMap);
return result;
}

}

我的想法是controller接收到请求后进行处理,处理后将结果用json封装返回给jsp

dao层代码

package dao;

import model.UserInfo;
import org.apache.ibatis.annotations.Param;

/**
* Created by Administrator on 2016/9/22.
*/
public interface BookWormDao {
UserInfo login(@Param("username") String username, @Param("password") String password);
int register(@Param("username") String username,@Param("password") String password);
UserInfo selectUserInfoByusername(String username);

}

model层代码

package model;

public class UserInfo {
private Integer userid;

private String username;

private String password;

public Integer getUserid() {
return userid;
}

public void setUserid(Integer userid) {
this.userid = userid;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username == null ? null : username.trim();
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password == null ? null : password.trim();
}
}


service层里面还包括一个实现,因为service采用的接口方法

package service;

import model.UserInfo;

/**
* Created by Administrator on 2016/9/22.
*/
public interface BookWormSvc {

UserInfo login(String username,String password);
int register(String username,String password);
UserInfo selectUserInfoByusername(String username);
}

package service.serviceImpl;

import dao.BookWormDao;
import model.UserInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import service.BookWormSvc;

/**
* Created by Administrator on 2016/9/22.
*/
@Service
public class BookWormSvcImpl implements BookWormSvc {
@Autowired
BookWormDao bookWormDao;
@Override
public UserInfo login(String username, String password) {
return bookWormDao.login(username,password);
}

@Override
public int register(String username, String password) {
return bookWormDao.register(username,password);
}

@Override
public UserInfo selectUserInfoByusername(String username) {
return bookWormDao.selectUserInfoByusername(username);
}
}

jsonutil工具

package until;

import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
* Created by Administrator on 2016/9/19.
*/
public class JsonUtil {

private final static ObjectMapper objectMapper = new ObjectMapper();

private JsonUtil() {

}

public static ObjectMapper getInstance() {

return objectMapper;
}

/**
* javaBean,list,array convert to json string
*/
public static String obj2json(Object obj) throws Exception {
return objectMapper.writeValueAsString(obj);
}

/**
* json string convert to javaBean
*/
public static <T> T json2pojo(String jsonStr, Class<T> clazz)
throws Exception {
return objectMapper.readValue(jsonStr, clazz);
}

/**
* json string convert to map
*/
public static <T> Map<String, Object> json2map(String jsonStr)
throws Exception {
return objectMapper.readValue(jsonStr, Map.class);
}

/**
* json string convert to map with javaBean
*/
public static <T> Map<String, T> json2map(String jsonStr, Class<T> clazz)
throws Exception {
Map<String, Map<String, Object>> map = objectMapper.readValue(jsonStr,
new TypeReference<Map<String, T>>() {
});
Map<String, T> result = new HashMap<String, T>();
for (Map.Entry<String, Map<String, Object>> entry : map.entrySet()) {
result.put(entry.getKey(), map2pojo(entry.getValue(), clazz));
}
return result;
}

/**
* json array string convert to list with javaBean
*/
public static <T> List<T> json2list(String jsonArrayStr, Class<T> clazz)
throws Exception {
List<Map<String, Object>> list = objectMapper.readValue(jsonArrayStr,
new TypeReference<List<T>>() {
});
List<T> result = new ArrayList<T>();
for (Map<String, Object> map : list) {
result.add(map2pojo(map, clazz));
}
return result;
}

/**
* map convert to javaBean
*/
public static <T> T map2pojo(Map map, Class<T> clazz) {
return objectMapper.convertValue(map, clazz);
}
}

下面是配置文件代码

jdbc_driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://localhost:3306/bookworm?useUnicode=true&characterEncoding=utf-8
jdbc_username=root
jdbc_password=root

上面填好你自己的数据库名称和密码

下面是log4j

### set log levels ###
#log4j.rootLogger = debug , stdout , D , E
log4j.rootLogger = e , stdout , d

###  output to the console ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n
log4j.appender.stdout.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n

### Output to the log file ###
log4j.appender.d = org.apache.log4j.DailyRollingFileAppender
log4j.appender.d.File = ${springmvc.root}/WEB-INF/logs/log.log
log4j.appender.d.Append = true
log4j.appender.d.Threshold = DEBUG
log4j.appender.d.layout = org.apache.log4j.PatternLayout
log4j.appender.d.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

### Save exception information to separate file ###
log4j.appender.e = org.apache.log4j.DailyRollingFileAppender
log4j.appender.e.File = ${springmvc.root}/WEB-INF/logs/error.log
log4j.appender.e.Append = true
log4j.appender.e.Threshold = ERROR
log4j.appender.e.layout = org.apache.log4j.PatternLayout
log4j.appender.e.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

mybatis-config

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 命名空间 -->
<typeAliases>
<typeAlias alias="UserInfo" type="model.UserInfo"/>
</typeAliases>
<!-- 映射map -->
<mappers>
</mappers>
</configuration>

spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 
<!-- 引入jdbc配置文件 -->
<context:property-placeholder location="classpath:conf/jdbc.properties"/>

<!-- 扫描文件(自动将servicec层注入) -->
<context:component-scan base-package="service"/>

</beans>


spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

<mvc:annotation-driven />

<!-- 扫描controller(controller层注入) -->
<context:component-scan base-package="controller"/>

<!-- 避免IE在ajax请求时,返回json出现下载 -->
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>

<!-- 对模型视图添加前后缀 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/page/"
p:suffix=".jsp"/>
</beans>


spring_mybatis

<?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"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd"> 
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init"
destroy-method="close" >
<property name="driverClassName">
<value>${jdbc_driverClassName}</value>
</property>
<property name="url">
<value>${jdbc_url}</value>
</property>
<property name="username">
<value>${jdbc_username}</value>
</property>
<property name="password">
<value>${jdbc_password}</value>
</property>
<!-- 连接池最大使用连接数 -->
<property name="maxActive">
<value>20</value>
</property>
<!-- 初始化连接大小 -->
<property name="initialSize">
<value>1</value>
</property>
<!-- 获取连接最大等待时间 -->
<property name="maxWait">
<value>60000</value>
</property>
<!-- 连接池最大空闲 -->
<property name="maxIdle">
<value>20</value>
</property>
<!-- 连接池最小空闲 -->
<property name="minIdle">
<value>3</value>
</property>
<!-- 自动清除无用连接 -->
<property name="removeAbandoned">
<value>true</value>
</property>
<!-- 清除无用连接的等待时间 -->
<property name="removeAbandonedTimeout">
<value>180</value>
</property>
<!-- 连接属性 -->
<property name="connectionProperties">
<value>clientEncoding=UTF-8</value>
</property>
</bean>

<!-- mybatis文件配置,扫描所有mapper文件 -->
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean"
p:dataSource-ref="dataSource"
p:configLocation="classpath:conf/mybatis-config.xml"
p:mapperLocations="classpath:mapper/*.xml"/><!-- configLocation为mybatis属性 mapperLocations为所有mapper-->

<!-- spring与mybatis整合配置,扫描所有dao -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"
p:basePackage="dao"
p:sqlSessionFactoryBeanName="sqlSessionFactory"/>

<!-- 对数据源进行事务管理 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource"/>
</beans>

mapper
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.BookWormDao">
<select id="login" resultType="model.UserInfo">
SELECT * from userinfo WHERE username=#{username, jdbcType=VARCHAR} AND password=#{password, jdbcType=VARCHAR}
</select>

<select id="selectUserInfoByusername" resultType="model.UserInfo" parameterType="String">
SELECT * from userinfo where username=#{username}
</select>

<select id="selectUserInfoByuserid" resultType="model.UserInfo" parameterType="int">
SELECT * from userinfo where userid=#{userid}
</select>

<insert id="register" >
INSERT INTO userinfo (username,password) VALUES(#{username, jdbcType=VARCHAR},#{password, jdbcType=VARCHAR})
</insert>

</mapper>


 

 page里存放的自己定义的jsp页面



页面使用的Bootstrap来创建的UI 其实它相当于一个css文件,里面帮你定义好了控件的样式

login.jsp

<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2016/9/22
Time: 15:51
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
<title>书虫登陆</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>

<!-- 新 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css">
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="http://cdn.bootcss.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
<div class="row">
<div class="page-header text-primary">
<h1>欢迎登陆书虫</h1>
</div>
</div>
<div class="row">
<div class="col-md-6"></div>
<div class="col-md-6">
<div class="row">
<div class="page-header text-primary">
<h2>用户登陆/注册</h2>
</div>
</div>
<br><br>
<div class="row">
<div class="input-group input-group-lg">
<span class="input-group-addon  glyphicon glyphicon-user " style="font-size: 20px">用户名:</span>
<input type="text" class="form-control" placeholder="请输入用户名" id="username">
</div>
</div>
<br><br>
<div class="row">
<div class="input-group input-group-lg">
<span class="input-group-addon  glyphicon glyphicon-asterisk " style="font-size: 20px">密 码:</span>
<input type="password" class="form-control" placeholder="请输入用密码" id="password">
</div>
<br><br>
</div>
<div class="row">
<button type="button" class="btn-lg btn-primary col-md-3 col-md-offset-1" id="login">登陆</button>
<button type="button" class="btn-lg btn-primary col-md-3 col-md-offset-2" id="register">注册</button>
</div>
<p class="text-danger" id="resultMessage"></p>
</div>
</div>
</div>

</body>
<script type="text/javascript" src="<%=path %>/page/js/login.js"></script>
</html>

login.js

/**
* Created by Administrator on 2016/9/22.
*/
$(function () {

$("#login").click(function () {

var data = {
username:$("#username").val(),
password:$("#password").val()
}
if((data.username=="") || (data.password=="")){
alert("用户名或密码不能为空");
return ;
}
$.ajax({
type:"post",
url:getRootPath()+"/login.do",
data:data,
dataType:"json",
success:function (resultJson) {
if(resultJson.resultCode==1){
//登陆成功
window.location.href=getRootPath()+"/page/success.jsp";
}else{//登录失败
$("#resultMessage").html(resultJson.resultObject);
}
}
});
});
$("#register").click(function () {
window.location.href=getRootPath()+"/page/register.jsp";
});
});

function getRootPath() {
//获取当前网址,如: /meun.jsp
var curWwwPath = window.document.location.href;
//获取主机地址之后的目录,如: proj/meun.jsp
var pathName = window.document.location.pathname;
var pos = curWwwPath.indexOf(pathName);
//获取主机地址,如: http://localhost:8083 var localhostPath = curWwwPath.substring(0, pos);
//获取带"/"的项目名,如:/proj
var projectName = pathName.substring(0, pathName.substr(1).indexOf(
'/') + 1);
return (localhostPath + projectName);
}

success.jsp

<%@ page import="model.UserInfo" %><%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2016/9/22
Time: 17:32
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="model.UserInfo"%>
<%
UserInfo user=(UserInfo) session.getAttribute("userinfo");
%>
<html>
<head>
<title>success</title>
</head>
<body>
<h1>欢迎<%=user.getUsername() %>登陆</h1>
</body>
</html>


web.xml

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>Archetype Created Web Application</display-name>

<!-- 读取spring配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:conf/spring.xml;
classpath:conf/spring_mybatis.xml
</param-value>
</context-param>
<!-- 设计路径变量值 -->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>springmvc.root</param-value>
</context-param>

<!-- Spring字符集过滤器 -->
<filter>
<filter-name>SpringEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SpringEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<!-- 日志记录 -->
<context-param>
<!-- 日志配置文件路径 -->
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:conf/log4j.properties</param-value>
</context-param>
<context-param>
<!-- 日志页面的刷新间隔 -->
<param-name>log4jRefreshInterval</param-name>
<param-value>6000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- springMVC核心配置 -->
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:conf/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

<!--session超时定义  单位分钟-->
<session-config>
<session-timeout>15</session-timeout>
</session-config>

<welcome-file-list>
<welcome-file>/page/login.jsp</welcome-file>
</welcome-file-list>

</web-app>

代码我都贴出来了,大家最好看着自己敲一遍,并参考网上相关的资料,了解一下每块的作用。我也只是个小白,大家商量着进步。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息